2012-02-02 13 views
3

Spring MVCはgetterとsetterを使用してModelAttributeオブジェクトの値を設定していますか?あなたは私にそのような情報源を挙げてください。もしそうでなければ、Spring MVCにsetterを使ってモデルオブジェクトのプロパティを設定させることができますか?Spring MVCはsetterメソッドを使用してModelAttributeオブジェクトのプロパティを設定していますか?

ありがとうございました。

+1

尋ねられたようにあなたの質問は理にかなっていません。 ModelAttributeは注釈であるため、実行時に@ModelAttributeのインスタンスを '取得'または '設定'しないでください。あなたの質問を明確にしてください。 –

答えて

3

これは本当に質問に答えるかどうかは知りませんが、私は、ドキュメントで、この引用符が見つかりました:

コマンドまたはフォームは(セッター経由)Beanプロパティへのリクエストパラメータをバインドするオブジェクトまたは直接の@InitBinderメソッドおよび/またはHandlerAdapter設定に応じて、カスタマイズ可能な型変換を使用してフィールドに追加できます。 ModelAttributeアノテーションをメソッド引数に使用して、使用するモデル属性名をカスタマイズすることができます。

これは、セクタが使用可能な場合に使用され、フォールバックとしてフィールドを直接更新することを意味しているようです。

しかし、決定的な回答が必要な場合は、ソースコードを見てください。

+1

あなたは正しいです春のMVCは本当にセッターを使用していますが、いつもそうではありません。 とgetMyList()メソッドがsetプロパティのすべての項目を含むlistの新しいインスタンスを返すとします。 Springはgetterを使用してリストに項目を設定しているため、すべてが失敗します。私は春に、ゲッターを使ってアイテムをリストに入れず、代わりに自分のリストを初期化し、セッターを使って自分のフォームに戻すことを期待していました。それは、私がSpringから新しいセットのリストを与えているようなもので、Springはそのリストに何かを入れますが、それを元に戻すことはありません。どのような落とし穴。 – supertonsky

+0

@supertonsky - あなたは完全に意味をなさない。どのように "ゲッタ"を使って何かを埋めるのですか? –

+0

いいえ、それはその中に項目を挿入するためのリストを取得するためにゲッターを使用している春です。私はそれが実際のプロパティを返さず、Setプロパティからアイテムを含む新しいリストを返すだけなので、失敗した理由を知ることができるようにそれを言いました。 – supertonsky

0

私もこの問題が発生し、状況は以下の通りです:

コードスニペット:

Product.java

public class Product { 

    private String name; 
    private String imageStr; 
    private List<ProdutImage> productImageList; 

    public String getName() { 
     return this.name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public List<ProductImage> getProductImageList() { 
     return this.productImageList; 
    } 

    public void setProductImageList(List<ProductImage> productImageList) { 
     this.productImageList = productImageList; 
     if (productImageList != null) { 
      this.imageStr = [...]// convert list to json string 
     } 
    } 

} 

それが直接 "imageStr" を設定しますが、基本はなかったですイメージリストフィールドでは、jspページが好きです:

<form> 
     <input type="text" name="product.name"/> 
     <input type="text" name="product.productImageList[0]"/> 
     <input type="text" name="product.productImageList[1]"/> 
     <input type="text" name="product.productImageList[2]"/> 
    </form> 

私は "setName"と "setProductImageList"の両方にブレークポイントを置くと、 "setName"が呼び出されるが、 "setProductImageList"は呼び出されないことがわかります。このため、 "imageStr"はnullです。

関連する問題