我有类似以下的课程设置......
public class Person {
protected String firstName;
protected String lastName;
protected Integer age;
...
}
看起来像这样的控制器......
@RequestMapping(value={"/person"}, method = RequestMethod.GET)
public void returnPerson(Person person, ModelMap model, HttpServletResponse response) {
....
}
我正在传递一个直接的网址,例如......
<a href="/person?firstName=John&lastName=Smith&age=18">Link</a>
是否可以将所有这些传递到我的控制器中的“Person”参数中,而不是为每个参数创建大量@RequestParam
个参数?特别是如果我要传递大量的参数?
答案 0 :(得分:1)
是的,只要您遵循Person的属性命名约定,就可以按照您描述的确切方式执行此操作。
当你以这种方式尝试时会遇到什么问题?
答案 1 :(得分:1)
您可以完全按照要求使用模型绑定:
@ModelAttribute("person")
public Person getPerson() {
return new Person();
}
@RequestMapping(value="/person", method=RequestMethod.GET)
public void handle(@ModelAttribute("person") Person person, BindingResult errors, ModelMap model, HttpServletRequest req) {
...
}
模型属性将由getPerson
方法初始化,当handle
方法触发时,请求中的任何参数都将自动绑定到新Person对象中的相应属性。 BindingResult
保留因绑定而导致的任何错误,例如如果您将“XYZ”作为年龄字段(整数)传递。
此处提供更多信息http://static.springsource.org/spring/docs/current/spring-framework-reference/html/validation.html
答案 2 :(得分:0)
这个问题在这里也很好地回答: Passing parameters from JSP to Controller in Spring MVC
仔细阅读答案,希望你能正确得到答案。