代码之家  ›  专栏  ›  技术社区  ›  spa

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

  •  0
  • spa  · 技术社区  · 15 年前

    我使用SpringMVC(通过SpringRoo)构建一个用于管理人员的小型Web应用程序。在创建一个人的页面中,bean Person 用作表单支持对象(模型映射中的键“person”)。

    <form:form action="${form_url}" method="POST" modelAttribute="person">
    

    我想在模型图中添加一些属性,用户可以在创建表单中修改这些属性。基本上,我尝试添加一个布尔值,以便在用户按下提交按钮后控制下一个显示的页面。

    我尝试使用一个简单的复选框修改布尔值(模型映射中的“MyBoolean”键):

    <form:checkbox id="_myboolean_id" path="myBoolean"/>
    

    然而,由于我是春天MVC的新人,我在这里遇到了一些困难。布尔对象不是表单支持对象的属性。因此,如果我尝试访问它,会抛出以下异常(当然):

    bean的属性“myboolean”无效 类[de.cm.模型.人]:bean 属性“MyBoolean”不可读或 具有无效的getter方法:是否 getter的返回类型与 setter的参数类型?

    是否有直接访问模型映射值的方法?我现在能想到的唯一解决方案是类周围的一种包装对象 以及用作新表单支持对象的附加属性。然而,对于一个简单的任务来说,这是一项更大的工作。你有更好的解决方案吗?

    1 回复  |  直到 15 年前
        1
  •  2
  •   Yuri.Bulkin    15 年前

    您可以创建自定义表单域:

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

    并在Controller Post方法中指定附加参数:

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