访问和修改不属于表单支持bean的属性/对象

时间:2010-03-21 10:05:28

标签: spring spring-mvc spring-roo

我使用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的一种包装器对象以及用作新表单支持对象的其他属性。但是,对于恕我直言的简单任务来说,这是更多的工作。你有更好的解决方案吗?

1 个答案:

答案 0 :(得分:2)

您可以创建自定义表单字段:

<input type="checkbox" name="myBoolean"/>

并在Controller post方法中指定其他参数:

public ModelAndView savePerson(@ModelAttribute("person") Person person, @RequestParameter ("myBoolean") Boolean myBoolean)