3

Spring MVC + Maven + Hibernate を使用して、「カートに追加」ボタンと「お気に入りに追加」ボタンの両方を持つ Spring MVC フォームを作成しようとしています。以下のコードに示すように、1 つのボタンが押されるたびに、もう 1 つのボタンは null を返します。

両方のボタンはtype=submitであり、以下のコードでそれらを処理しています。私が抱えている問題は、「お気に入りに追加」のケースで常にキャッチされない例外が発生することです (「内部エラー」ページにリダイレクトされます)。

ボタンごとに多数の if - ステートメントを使用せずに、各ボタンの押下をフォームで個別に処理するエレガントな方法があるかどうか疑問に思っています。

HTML ファイルには、フォームの構造で宣言された次の項目があります。

<c:if test="${empty readOnly}">
                        <input type="number" value="1" name="quantity" class="input-mini"/>
                        <button class="btn btn-primary" type="submit" name="addToCart"><i class="icon-shopping-cart icon-white"><jsp:text /></i> Add</button>
                        <button class="btn btn-secondary" type="submit" name="favourite"><jsp:text /> Favourite This!</button>
</c:if>

そして、次の Controller メソッドを使用しています。

   @RequestMapping(value = "/submit", method = RequestMethod.POST, produces = "text/html")
      public String submit(HttpServletRequest request, Model uiModel) {

        init(uiModel);
        String id = request.getParameter("product-id");
        String quantity = request.getParameter("quantity");

        if(!request.getParameter("addToCart").toString().equals(null))
        {
            if (StringUtils.isNotBlank(id) && StringUtils.isNotBlank(quantity)) {
              shoppingCartServiceLocal.addToShoppingCart(shoppingCart, id, quantity);         
            }
        }

    if(!request.getParameter("favourite").equals(null))
    {
        //ADD TO FAVOURITE
    }
        return "redirect:/items/" + id;
 }

私はまだこれらを学んでいるので、明らかな何かが欠けているかもしれません。どんな助けでも大歓迎です。

4

1 に答える 1

9

属性を使用paramして、どのボタンにどのメソッドを使用するかを指定します。

@RequestMapping(value = "/submit", method = RequestMethod.POST, params = "addToCart")
public String addToCart(HttpServletRequest request, Model uiModel) {
    //your code
}

@RequestMapping(value = "/submit", method = RequestMethod.POST, params = "favourite")
public String addToFavorites(HttpServletRequest request, Model uiModel) { 
    //your code
}
于 2012-11-20T16:11:47.390 に答える