2016-04-01 20 views
0

"/ restaurant/edit/{id}"というレストラン編集ページがあります。そのページから、私は(他のものの中でも)「テーブルを追加」ボタンを押してレストランにテーブルを追加することができます。そのボタンは "/ restaurant/edit/{id}/table"にある別のページに移動します。問題は、テーブルを追加した後、ボタンを押して前のページに戻るにはどうすればいいですか?現在、私の担当者は正しい値である "editRestaurant.jsp"を返していますが、同じレストランIDを渡す方法もわかりません。私が何を意味しているかを理解していただければ幸いですフォームを送信した後、前のページに戻る(Spring/Hibernate)

マイ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":RestaurantController.javaで

<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> 

関連するメソッド:

@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> 

答えて

1

POSTが成功した後、リダイレクトする必要があります。

このような何か:

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

または

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

パラメータを含むモデルを返すために使用できる別の方法があります。私はあなたの問題を解決するかもしれないと信じています。

@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); 
} 
関連する問題