2015-06-22 5 views
0

У меня есть небольшие данные о форме 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, я использую два отдельных текстовых поля и кнопку для ввода ввода и передачи его контроллеру. Как написать общий метод обработчика для этих данных, который обрабатывает динамически сгенерированные текстовые поля и кнопки?

+0

Я предполагаю, что вы не хотите, эти две другие поля и кнопки , Вы хотите добавлять элементы непосредственно из таблицы. Правильно? – vivekpansara

ответ

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"; 
} 
+0

Я пытался добавить каждой из этих строк в родителю (который уже был там до каких-либо изменений, предложенных), но получил ошибку HTTP 500. Где добавить modelAttribute = „корзинка“, родитель или в каждом из эта строка ? Или я должен удалить родителя ?? – Muzammil

+0

Нет необходимости в родительском '', вы можете использовать его в каждой строке как индивидуальную форму. – vivekpansara

Смежные вопросы