只需从 jsp 输入标记中删除“路径”,然后使用 HttpServletRequest 检索剩余数据即可。
例如,我有一个像豆子
public class SomeData {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
然后在jsp中,我将有额外的数据字段以正常的html标签发送
<form:form method="post" action="somepage" commandName="somedata">
<table>
<tr>
<td>name</td>
<td><form:input path="name" /></td>
</tr>
<tr>
<td>age</td>
<!--Notice, this is normal html tag, will not be bound to an object -->
<td><input name="age" type="text"/></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="send"/>
</td>
</tr>
</table>
</form:form>
请注意,somedata bean 具有 age 不是的名称字段。因此,添加的年龄字段没有“路径”。如果没有 path 属性,对象属性将不会绑定到此字段。
在控制器上,我将不得不使用HttpServletRequest,例如,
@RequestMapping("/somepage")
public String someAction(@ModelAttribute("somedata") SomeData data, Map<String, Object> map,
HttpServletRequest request) {
System.out.println("Name=" + data.getName() + " age=" + request.getParameter("age"));
/* do some process and send back the data */
map.put("somedata", data);
map.put("age", request.getParameter("age"));
return "somepage";
}
在访问视图上的数据时,
<table>
<tr>
<td>name</td>
<td>${somedata.name}</td>
</tr>
<tr>
<td>age</td>
<td>${age}</td>
</tr>
</table>
somedata 是提供 name 属性的 bean,age 由控制器显式设置属性。