我正在尝试使用Spring MVC带注释的控制器的示例项目.到目前为止,我在网上找到的所有示例都将JSP绑定到特定模型,控制器用于@ModelAttribute在处理程序方法中检索模型对象.
如何将其他参数(不存在于Model对象中)从JSP传递给Controller?我是否使用JavaScript来执行此操作?也有人可以澄清该HttpServletRequest对象应该用于什么.
谢谢.
kal*_*yan 31
只需从jsp输入标记中删除"path",然后使用HttpServletRequest检索剩余数据.
例如,我有一个像豆子一样的
public class SomeData {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Run Code Online (Sandbox Code Playgroud)
然后在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>
Run Code Online (Sandbox Code Playgroud)
请注意,somedata bean具有年龄不是的名称字段.因此,添加年龄字段时没有"路径".如果没有path属性,则对象属性不会绑定到此字段.
在Controller上我将不得不使用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";
}
Run Code Online (Sandbox Code Playgroud)
在访问视图上的数据时,
<table>
<tr>
<td>name</td>
<td>${somedata.name}</td>
</tr>
<tr>
<td>age</td>
<td>${age}</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
somedata是提供name属性的bean,age是控制器显式设置的属性.
| 归档时间: |
|
| 查看次数: |
93936 次 |
| 最近记录: |