0

我有一个如下的课程设置......

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) {
    ....
}

我正在传递一个直接的 URL,例如...

<a href="/person?firstName=John&lastName=Smith&age=18">Link</a>

是否可以将所有这些传递到我的控制器中的“Person”参数中,而不是@RequestParam为每个参数制作大量参数?特别是如果我要传递大量的参数?

4

3 回答 3

1

是的,只要您遵循 Person 的属性命名约定,您就可以按照您描述的确切方式执行此操作。

当你用这种方式尝试时,你会遇到什么问题?

于 2012-07-01T09:06:33.573 回答
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) {
    ...
}

模型属性将由方法初始化,getPersonhandle方法触发时,请求中的任何参数都将自动绑定到新 Person 对象中的相应属性。保存由于绑定而导致的BindingResult任何错误,例如,如果您将“XYZ”作为年龄字段(整数)传递。

更多信息在这里http://static.springsource.org/spring/docs/current/spring-framework-reference/html/validation.html

于 2012-07-01T11:02:16.120 回答
0

这个问题在这里也得到了很好的回答: Passing parameters from JSP to Controller in Spring MVC

仔细阅读答案,希望你能得到正确的答案。

于 2012-09-16T08:23:01.663 回答