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

モデルバインディングを使用して、まさにあなたが求めていることを行うことができます:

@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」を age フィールド (整数) として渡した場合など、バインドの結果としてエラーが保持されます。

詳細はこちらhttp://static.springsource.org/spring/docs/current/spring-framework-reference/html/validation.html

于 2012-07-01T11:02:16.120 に答える
1

はい、 Person のプロパティ命名規則に従っている限り、説明しているとおりの方法でそれを行うことができます。

この方法を試してみると、どのような問題が発生しますか?

于 2012-07-01T09:06:33.573 に答える
0

この質問はここでも適切に回答されています: Passing parameters from JSP to Controller in Spring MVC

答えを注意深く読んでください。正しく答えられることを願っています。

于 2012-09-16T08:23:01.663 に答える