如何在Spring中使用SimpleFormController将多个表单输入组合到单个对象中?

Ter*_*nce 2 java spring spring-mvc

我有一个名为Person的对象,它具有以下属性:

int id;
Name name;
String address;
Date birthday;
String email;
String note;
Run Code Online (Sandbox Code Playgroud)

Name类具有以下属性:

String firstName;
String middleName;
String lastName;
Run Code Online (Sandbox Code Playgroud)

在我的表单中,我有这些输入字段:

<tr>
    <td>First Name:</td>
    <td><form:input path="firstName" /></td>
</tr>
<tr>
    <td>Middle Name:</td>
    <td><form:input path="middleName" /></td>
</tr>
<tr>
    <td>Last Name:</td>
    <td><form:input path="lastName" /></td>
</tr>
Run Code Online (Sandbox Code Playgroud)

在将名称输入字段传递给将由SimpleFormController创建的Person对象之前,我如何能够检索名称输入字段的值并将其转换为Name对象?我很确定我需要使用initBinder()方法,但我不知道如何开始.

我正在使用Spring 3.0,是的,我知道SimpleFormController已经被弃用,但我仍然打算使用它.

Ral*_*lph 5

你需要写:

<form:input path="name.firstName" />
...
Run Code Online (Sandbox Code Playgroud)

在你的jsp.并且需要覆盖formBackingObject方法,以便它返回一个空的Person对象,并引用一个emtpy名称对象

protected Object formBackingObject(HttpServletRequest request) {
   Person person = new Person();
   person.Name = new Name();
   return person;
}
Run Code Online (Sandbox Code Playgroud)

多数民众赞成,你不需要编写自己的绑定.