簡體   English   中英

提交表單后,返回上一頁(春季/冬眠)

[英]After submitting a form go back to previous page (Spring/Hibernate)

我的餐廳編輯頁面位於“ / restaurant / edit / {id}”。 在該頁面上,我可以通過按“添加表格”按鈕將表格添加到餐廳中。 該按鈕將我帶到位於“ / restaurant / edit / {id} / table”的另一頁。 問題是,添加表格后-如何通過按按鈕返回上一頁? 現在,我的contoller返回的是“ editRestaurant.jsp”,它是正確的值,但是我也不知道如何傳遞相同的餐廳ID。 我希望你明白我的意思。

我的RestaurantTableController.java:

@Controller
public class RestaurantTableController {

    @Autowired
    private RestaurantService restaurantService;

    @Autowired
    private RestaurantTableService restaurantTableService;

    @RequestMapping(value="restaurant/{id}/table", method = RequestMethod.GET)
    public String addRestaurantTable(Model model, @PathVariable Long id) {
        model.addAttribute("table", new RestaurantTable());
        return "newTable";
    }

    @RequestMapping(value = "restaurant/{id}/table", method = RequestMethod.POST)
    public String addRestaurantTableAction(@PathVariable Long id, @ModelAttribute ("table") RestaurantTable table, BindingResult result) {
        RestaurantTableFormValidator restaurantTableFormValidator = new RestaurantTableFormValidator();
        restaurantTableFormValidator.validate(table, result);
        if (result.hasErrors()) {
            return "newTable";
        }
        restaurantService.mergeRestaurant(id, table);
        return "editRestaurant";
    }

}

我的“ newTable.jsp”:

<body>
<jsp:include page="../fragments/menu.jsp"/>
<div id="body">
    <section class="content-wrapper main-content clear-fix">

        <h2>Add New Table</h2>

        <form:form method="POST" modelAttribute="table">
            <table>
                <tr>
                    <td>Table size:</td>
                    <td><form:input path="tableSize" /></td>
                    <td><form:errors path="tableSize" cssClass="error"/></td>
                </tr>
                <tr>
                    <td>Table number:</td>
                    <td><form:input path="tableNumber" /></td>
                    <td><form:errors path="tableNumber" cssClass="error"/></td>
                </tr>
                <tr>
                    <td colspan="3"><input type="submit" onclick="goback()"/>
                    </td>
                </tr>
            </table>
        </form:form>

    </section>
</div>
<jsp:include page="../fragments/footer.jsp"/>

</body>

RestaurantController.java中的相關方法:

@RequestMapping(value = "restaurant/edit/{id}", method = RequestMethod.GET)
public String editRestaurant(@PathVariable Long id, Model model) {
    Restaurant restaurant = restaurantService.getRestaurant(id);
    model.addAttribute("restaurant", restaurant);
    return "editRestaurant";
}

@RequestMapping(value = "restaurant/edit/{id}", method = RequestMethod.POST, params="submit")
public String editRestaurant(@ModelAttribute ("restaurant") Restaurant restaurant, BindingResult result) {
    RestaurantFormValidator restaurantFormValidator = new RestaurantFormValidator();
    restaurantFormValidator.validate(restaurant, result);
    if (result.hasErrors()) {
        return "editRestaurant";
    }
    restaurantService.updateRestaurant(restaurant);
    return "redirect:/bookings";
}

“ editRestaurant.jsp”:

<div id="body">
    <section class="content-wrapper main-content clear-fix">

        <h2>Edit</h2>

        <form:form method="POST" modelAttribute="restaurant" >
            <table>
                <tr>
                    <td>Restaurant:</td>
                    <td><form:input path="restaurantName" /></td>
                    <td><form:errors path="restaurantName" cssClass="error"/></td>
                </tr>
                <tr>
                    <td>Address:</td>
                    <td><form:input path="address" /></td>
                    <td><form:errors path="address" cssClass="error"/></td>
                </tr>
                <tr>
                    <td colspan="3"><input type="submit" value="Submit" name="submit"/>
                    </td>
                </tr>
                <tr>
                    <c:forEach items="${restaurant.table}" var="item">
                        <td>${item.toString()}</td>
                    </c:forEach>
                </tr>
                <tr>
                    <td><a href="/restaurant/${id}/table">Add Table</a></td>
                </tr>
            </table>
        </form:form>
        <div>
            <a href="/bookings">Back to List</a>
        </div>


    </section>
</div>

您可以使用其他方法來返回將包含參數的模型。 我相信這可以解決您的問題。

@RequestMapping(value = "restaurant/edit/{id}", method = RequestMethod.GET)
      public String editRestaurant(@PathVariable Long id, Model model) {
      Restaurant restaurant = restaurantService.getRestaurant(id);
      return new ModelAndView("editRestaurant", "restaurant", restaurant);
}

POST成功POST您應該進行重定向。

像這樣:

return "redirect:/restaurant/edit/" + restaurant.getId();

要么

return new RedirectView("/restaurant/edit/" + restaurant.getId(), false);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM