为动态生成的按钮和文本框编写处理程序方法

时间:2015-06-22 19:57:45

标签: spring jsp spring-mvc jstl

我在JSP表单上有这个小数据。我使用JSTL迭代数据。在每一行中,我有两个动态生成的文本框和一个按钮。问题是:如何为此数据编写通用处理程序方法,该方法处理动态生成的文本框和按钮。这是我的JSP

<c:forEach items="${menus}" var="menu" > 
 <tr>
    <td align="left" >${menu.getMenuId()}</td>
    <td align="right"><input type="text" name="menu_name" value="${menu.getMenuName()}"/></td>
    <td align="right"><input type="text" name="menu_price" value="${menu.getMenuPrice()}"/></td>
    <td align="right"><c:out value="${menu.getIsAvailable()}" /></td>
    <td align="right"><input type="submit" value="Add Item ${menu.getMenuId()}"></td>
  </tr>
</c:forEach>

 <h4>Add Product</h4>
 Name: <input type="text" name="chosen_menu_name" />
 Price: <input type="text" name="chosen_menu_price" />
 <input type="submit" value="Add to cart">

这是我的控制器(虽然我不知道该把它放在那里 - 目前我正在使用两个单独的文本框和一个按钮来获取输入)

@RequestMapping(method = RequestMethod.POST)
public ModelAndView AddMenu(@RequestParam("chosen_menu_name") String mymenu, @RequestParam("chosen_menu_price") String menu_price, @ModelAttribute("cart") ArrayList<Menu> mycart, Model model)
{
    Menu menu = new Menu();
    menu.setMenuId(0);
    menu.setMenuName(mymenu);
    menu.setMenuPrice(Double.parseDouble(menu_price));


    model.addAttribute("menus", GetMenus());
    mycart.add(menu);

    return new ModelAndView("edit_menu");        
    //return "show_menu";
}

从JSP中可以看出,我使用了两个单独的文本框和一个用于获取输入并将其传递给控制器​​的按钮。如何为此数据编写通用处理程序方法,该方法处理动态生成的文本框和按钮?

1 个答案:

答案 0 :(得分:0)

我假设你不想要那两个字段和按钮。您想直接从表中添加项目 你必须将每一行作为一个表格,如下所示:

<c:forEach items="${menus}" var="menu" > 
<tr>
<form method="POST" action="controllerName">
    <td align="left">
        ${menu.getMenuId()}
        <input type="hidden" name="menu_id" value="${menu.getMenuId()}"/>
    </td>
    <td align="right">
        <input type="text" name="menu_name" value="${menu.getMenuName()}"/>
    </td>
    <td align="right">
        <input type="text" name="menu_price" value="${menu.getMenuPrice()}"/>
    </td>
    <td align="right">
        <c:out value="${menu.getIsAvailable()}"/>
    </td>
    <td align="right">
        <input type="submit" value="Add Item">
    </td>
</form>
</tr>
</c:forEach>

和控制器如下:

@RequestMapping(method = RequestMethod.POST)
public ModelAndView AddMenu(@RequestParam("menu_id") String menuId, @RequestParam("menu_name") String mymenu, @RequestParam("menu_price") String menu_price, @ModelAttribute("cart") ArrayList<Menu> mycart, Model model)
{
    Menu menu = new Menu();
    menu.setMenuId(menuId);
    menu.setMenuName(mymenu);
    menu.setMenuPrice(Double.parseDouble(menu_price));

    model.addAttribute("menus", GetMenus());
    mycart.add(menu);

    return new ModelAndView("edit_menu");        
    //return "show_menu";
}