STSダッシュボードからダウンロード可能なSpring MVC Showcaseプロジェクトで勉強しています
私には完全に明確ではない次のような状況があります。
私は次のフォームを持っています:
<form id="readForm"action="<c:url value="/messageconverters/form" />" method="post">
<input id="readFormSubmit"type="submit"value="Read Form Data"/>
</form>
id="readForm" を持つフォームの送信アクションに関連して、次の Jquery 関数があります。これは、要求の body フィールドに 2 つの値付けされたテキスト変数を使用する AJAX 呼び出しを単純に実行するものです: **foo=barとfruit=apple
$("#readForm").submit(function() {
var form = $(this); // Contiene il riferimento all'elemento form submittato
// Contiene il riferimento all'emento input all'interno del form (il bottone)
var button = form.children(":first");
$.ajax({
type: "POST", // Tipo di Request: POST
// URL specificato dall'attributo "action" del form: "/messageconverters/form"
url: form.attr("action"),
// Dati che vengono passati all'interno del campo body dell'HTTP Request, 2 variabili
data: "foo=bar&fruit=apple",
// Tipo di media type accettabile dalla response
contentType: "application/x-www-form-urlencoded",
dataType: "text", // Tipo di dati passato dalla HTTP Request
success: function(text) { // Caso di successo:
MvcUtil.showSuccessResponse(text, button);
},
error: function(xhr) { // Caso di errore:
MvcUtil.showErrorResponse(xhr.responseText, button);
}
});
return false;
});
このリクエストを処理するコントローラ クラスのメソッドは次のとおりです。
@RequestMapping(value="/form", method=RequestMethod.POST)
public @ResponseBody String readForm(@ModelAttribute JavaBean bean) {
return "Read x-www-form-urlencoded: " + bean;
}
このメソッドは、 @ModelAttributeアノテーションが付けられた JavaBean オブジェクトを入力パラメーターとして受け取ります。
私が持っている定義済みのJavaBeanクラスの例の中を見る:
@XmlRootElement
public class JavaBean {
@NotNull
private String foo;
@NotNull
private String fruit;
public JavaBean() {
}
public JavaBean(String foo, String fruit) {
this.foo = foo;
this.fruit = fruit;
}
// GETTER e SETTER METHOD
}
したがって、JavaBeans には、フォームを送信したときに生成される HTTP リクエストを渡すフォーム変数と同じ名前を持つ 2 つのプロパティが含まれています。
@ModelAttributeアノテーションのドキュメント ( http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/web/bind/annotation/ModelAttribute.html ) を読むと、使用できることがわかりました両方ともメソッドに注釈を付け、両方ともメソッド パラメータに注釈を付けます。
私のケースは 2 番目のケースで、このケースでは次のように読むことができます:メソッド パラメータまたはメソッドの戻り値を名前付きモデル属性にバインドし、Web ビューに公開する注釈
では、正確にはどういう意味ですか?
このアノテーションでメソッドパラメーターにアノテーションを付けると、HTTP リクエストの本文内で渡された変数名がアノテーション付きオブジェクトの変数と一致する場合、Spring は同じプロパティ内のこの変数の値を自動的にコピーすることを意味すると思います注釈付きオブジェクトの名前
しかし、私はこれについて確信が持てません...
誰かが私がこのことをよく理解するのを手伝ってくれますか?
Tnx アンドレア