0

私は"menuModel"を使って生成された.jspページを持っています。このページを視覚化した後、ユーザはConfirm My Orderボタンに名前とクリックを挿入します。私は「ordersModel」という名前の別のモデルにこのmenuModelのデータをコピーするには、このボタンをクリックするとSpring MVCの別のモデルのデータでモデルを記入

Order

。このordersModelがインスタンス化されていないため、menuModelのデータをordersModelにコピーする方法はわかりません。

<form:form id="myOrderMenuId" action="${pageContext.request.contextPath}/OrderSent" method="post" commandName="ordersModel" > 
      <c:forEach items="#{menuModel.foodList}" var="foodModel" varStatus="status"> 
       <c:if test="${foodModel.quantity != 0}"> 
       <!-- <form:hidden value='${foodModel.foodName}' path='orders[${status.index}].foodName'/> 
       <form:hidden value='${foodModel.quantity}' path='orders[${status.index}].quantity'/> --> 
        <div> 
         <table class="itemList"> 
          <tr> 
           <td style="width: 170px"> 
            <span id="foodNameId${foodModel.foodId}"><c:out value="${foodModel.foodName}"/></span> 
           </td> 
           <td> 
            <span id="quantityId${foodModel.foodId}" style="margin-left: 110px;"><c:out value="${foodModel.quantity}"/></span> 
           </td> 
           <td> 
            <span id="priceId${foodModel.foodId}" style="margin-left: 110px;"><c:out value="${foodModel.price}"/></span> 
            <span> &euro;</span> 
           </td> 
           <td> 
            <span class="eachPrice" id="totalPriceId${foodModel.foodId}" style="margin-left: 110px;"><c:out value="${foodModel.totalPrice}"/></span> 
            <span> &euro;</span> 
           </td> 
          </tr> 
         </table> 
        </div> 
       </c:if> 
      </c:forEach> 

      <span class="itemList" style="color: #80FF00; margin-left: -300px">Total:</span> 
      <span id="totalPayment" class="itemList" style="color: #80FF00; margin-left: 5px"></span> 
      <span class="itemList" style="color: #80FF00;"> &euro;</span><br/> 
      <div class="itemList" style="margin-left:-1130px">Your Name: <input path="ownerName" name="orderName" class="myInbox" id="orderName"/></div> 
      <button id="viewMyOrder" class="greyButton" style="position:relative; left: -530px">Confirm My Order</button> 
</form:form> 

は、これは私のOrdersModelです:私は、コードにコメントとして

public class OrdersModel { 

    private String ownerName; 
    private List<Order> orders; 

    //getters and setters 
} 

どのようにordersModelにデータをコピーすることが可能です。

UPDATE

私のコントローラは次のようになります。

@RequestMapping(value = "/myOrder", method = RequestMethod.POST) 
public String viewMyOrder(Model model, 
     @ModelAttribute("menuModel")MenuModel menuModel) { 
    logger.info("You are in view my order page."); 

    List<FoodModel> foodModelList = new ArrayList<FoodModel>(); 
    for (FoodModel foodModel : menuModel.getFoodList()) { 
     FoodModel foodModelNew = new FoodModel(); 
     if (foodModel.getQuantity()!=0){ 
      foodModelNew.setFoodId(foodModel.getFoodId()); 
      foodModelNew.setFoodName(foodModel.getFoodName()); 
      foodModelNew.setQuantity(foodModel.getQuantity()); 
      foodModelNew.setPrice(foodModel.getPrice()); 
      foodModelNew.setTotalPrice(foodModel.getQuantity() * foodModel.getPrice()); 
     } 
     foodModelList.add(foodModelNew); 
    } 
    menuModel.setFoodList(foodModelList); 
    return "myOrder"; 
} 

@RequestMapping(value = "/OrderSent", method = RequestMethod.POST) 
public String orderSent(@ModelAttribute("ordersModel")OrdersModel ordersModel, 
     @RequestParam("orderName") String owner, Model model) { 
    logger.debug("Your order has been received"); 

    model.addAttribute("owner", owner); 


    return "orderSent"; 
} 
} 

答えて

1

なぜあなただ​​けのコントローラでFoodModel秒でOrdersModel.ordersを投入してからJSPをレンダリングしませんか?

<form:form id="myOrderMenuId" action="${pageContext.request.contextPath}/OrderSent" method="post" commandName="ordersModel" > 
      <c:forEach items="#{ordersModel.order}" var="foodModel" varStatus="status"> 

... 

コントローラー

@RequestMapping(value = "/myOrder", method = RequestMethod.POST) 
public String viewMyOrder(Model model, @ModelAttribute("menuModel")MenuModel menuModel) { 
    logger.info("You are in view my order page."); 

    OrdersModel ordersModel = new OrdersModel() 

    List<FoodModel> foodModelList = new ArrayList<FoodModel>(); 
    for (FoodModel foodModel : menuModel.getFoodList()) { 
     Order foodModelNew = new Order(); 
     if (foodModel.getQuantity()!=0){ 
      foodModelNew.setFoodId(foodModel.getFoodId()); 
      foodModelNew.setFoodName(foodModel.getFoodName()); 
      foodModelNew.setQuantity(foodModel.getQuantity()); 
      foodModelNew.setPrice(foodModel.getPrice()); 
      foodModelNew.setTotalPrice(foodModel.getQuantity() * foodModel.getPrice()); 
     } 
     ordersModel.add(foodModelNew); 
    } 
    model.addAttribute("ordersModel", ordersModel); 
    return "myOrder"; 
} 
+0

お返事のおかげで、私はより具体的にするためにも、私のコントローラを追加して、あなたは私のコードで間違っているものを参照してくださいだろうか?/myOrderはスクリーンショットを貼るページです。 foodNameとその数量をordersModelにコピーしたいだけです。 – reshad

+1

わかりましたら、 'MenuModel'を' OrderModel.orders'にコピーしたいと思っています。これを行う最も良い場所は 'Controller.viewMyOrder'です。そうすれば 'orderSent()'には完全なオブジェクトがあらかじめ用意されています。 'MenuModel'をセッションに入れ、' orderSent() 'で手動でコピーすることもできます。 – codependent

+0

しかし、それをController.viewMyOrderに置く手順はどうですか?再びありがとう – reshad

関連する問題