我试图逐个触发onClick事件和Spring控制器。 在按钮的单击事件中,我设置了一个隐藏字段,然后我想要执行控制器并在其中使用隐藏字段。这是我的JSP和Spring Controller的代码
JSP
<html:hidden property="MenuID" name="MenuID" id="hidMenuID" />
<c:forEach items="${menus}" var="menu" >
<tr class="cartItem">
<td align="left" >${MenuId}</td>
td align="right"><input type="text" name="menu_name" value="${Name}"/></td>
<td align="right"><input type="text" name="menu_price" value="${MenuPrice}"/></td>
<td align="right"><input type="submit" class="button" name="add_menu" value="Add" onclick="return SetMenuID();"></td>
<td align="right"><input type="submit" class="button" name="remove_menu" value="Remove" onclick="return SetMenuID();"></td>
</tr>
</c:forEach>
的JavaScript
<script type="text/javascript">
function SetMenuID()
{
var MenuID = document.getElementById('hidMenuID');
MenuID.value = 'The new value';
return true;
}
</script>
Spring MVC
@RequestMapping(params = "add_menu", method = RequestMethod.POST)
public ModelAndView AddMyMenu(@RequestParam("MenuID") String menu_id, Model model, @ModelAttribute("cart") ArrayList<Menu> mycart)
{
int nMenuId = Integer.parseInt(menu_id);
Menu menu = m_arrMenus.get(nMenuId);
model.addAttribute("menus", GetMenus());
mycart.add(menu);
return new ModelAndView("edit_menu");
}
正如您可能猜到的,我正在填充数据库中的数据。我有一个与每个ADD按钮相关联的onClick函数。我在thid函数中设置了隐藏字段,并希望它在我的控制器中可用。但是出现了运行时异常
错误状态400 - 必需的字符串MenuID不存在
我应该怎样做才能达到类似的效果?感谢您的任何意见。
答案 0 :(得分:0)
@RequestParam
在请求网址中需要一个参数我的名字。
由于您的表单已提交,因此该操作没有请求参数。这是您从服务器获得400 http错误的原因。
查看@RequestParam vs @PathVariable
之间的区别因此,请更改@RequestParam
注释或向其添加(required = false)
。