当前位置: 代码迷 >> java >> Spring MVC Controller之前未触发OnClick事件
  详细解决方案

Spring MVC Controller之前未触发OnClick事件

热度:74   发布时间:2023-07-26 14:20:25.0

我试图一一触发onClick事件和Spring控制器。 在按钮的click事件中,我设置了一个隐藏字段,然后希望执行控制器并在其中使用该隐藏字段。 这是我的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>

春季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不存在

我应该怎么做才能获得类似的结果? 感谢您的任何投入。

@RequestParam希望在请求url中有一个参数是我的名字。 由于您的表单已提交,因此该操作不会收到任何请求参数。 这是从服务器收到400 http错误的原因。

查看之间的区别

因此,要么更改@RequestParam批注,要么对其添加(required = false)

  相关解决方案