我使用Spring MVC(通过Spring Roo)构建一个用于管理人员的小型Web应用程序。在用于创建人员的页面中,bean Person
用作表单后备对象(模型映射中的键“person”)。
<form:form action="${form_url}" method="POST" modelAttribute="person">
我想在模型地图中添加一些属性,这些属性可以由用户在创建表单中更改。基本上,我尝试添加一个布尔值,这样我就可以控制用户按下提交按钮后显示的页面。
我尝试使用一个简单的复选框修改布尔值(模型图中的键“myBoolean”):
<form:checkbox id="_myboolean_id" path="myBoolean"/>
然而,由于我是Spring MVC的新手,我在这里遇到了一些困难。 Boolean对象不是表单支持对象的属性。因此,如果我尝试访问它,则抛出以下异常(当然):
bean的属性'myBoolean'无效 class [de.cm.model.Person]:Bean 属性'myBoolean'不可读或 有一个无效的getter方法:是吗? getter的返回类型匹配 setter的参数类型?
是否有办法直接访问模型图的值?我现在能想到的唯一解决方案是围绕类Person
的一种包装器对象以及用作新表单支持对象的其他属性。但是,对于恕我直言的简单任务来说,这是更多的工作。你有更好的解决方案吗?
答案 0 :(得分:2)
您可以创建自定义表单字段:
<input type="checkbox" name="myBoolean"/>
并在Controller post方法中指定其他参数:
public ModelAndView savePerson(@ModelAttribute("person") Person person, @RequestParameter ("myBoolean") Boolean myBoolean)