我正在尝试使用Spring MVC带注释的控制器的示例项目。到目前为止,我在网上找到的所有示例都将JSP绑定到特定模型,并且控制器使用@ModelAttribute
来检查处理程序方法中的模型对象。在Spring MVC中将参数从JSP传递到控制器
我该如何着手将JSP中的其他参数(不存在于Model对象中)传递给Controller?我是否使用JavaScript来做到这一点?也有人可以澄清什么HttpServletRequest
对象应该用于。
谢谢。
我正在尝试使用Spring MVC带注释的控制器的示例项目。到目前为止,我在网上找到的所有示例都将JSP绑定到特定模型,并且控制器使用@ModelAttribute
来检查处理程序方法中的模型对象。在Spring MVC中将参数从JSP传递到控制器
我该如何着手将JSP中的其他参数(不存在于Model对象中)传递给Controller?我是否使用JavaScript来做到这一点?也有人可以澄清什么HttpServletRequest
对象应该用于。
谢谢。
只需从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豆有名字字段的年龄不是。所以年龄字段没有“路径”添加。没有path属性,对象属性不会被绑定到这个字段。
上控制器I将不得不使用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是其提供的名称属性和年龄是bean由控制器明确设置属性。
如果不想创建另一个类(bean),但它应该在那里,那么除了@ModelAttrbute
之外,还可以使用@RequestParam
。
public String someAction(@RequestParam("somedata") String data)
{
------
}
你也可以离开了@RequestParam注解如果请求参数的名称对应方法参数名 – 2013-05-14 05:25:12
感谢名单在这个例子中它解决了我的问题 – Azuu 2013-02-02 09:27:42