2011-12-23 5 views
0

私は、次のようにspring mvcを使用してコマンドオブジェクトとして使用される別のクラスのオブジェクトを使用しています。注釈コントローラを使用してスプリングフォーム用のコマンドオブジェクト内のオブジェクトを使用するにはどうすればよいですか?

public class ManufacturerDO { 
int manufacturerID; 
String manufacturerName,manufacturerAddress; 
} 

これは私のコマンドobject.Myの疑いの下のドメインオブジェクトでは、私の春の形で、このドメインオブジェクト内のフィールドを取得する方法です。

私は以下の使用してみましたよ:

<form:select path="productManufacturer.manufacturerID"> 
     <c:forEach var="manufacturer" items="${manufacturerList}"> 
      <form:option value="${manufacturer.manufacturerName}"> 
       <c:out value="${manufacturer.manufacturerName}" /> 
      </form:option> 
     </c:forEach> 
</form:select> 

しかし、次の例外取得: 無効なプロパティ 'productManufacturer' [com.global.onlineShop.ProductDO] Beanクラスの:ネストされたプロパティ「の値をproductManufacturer ' 無効である。

ありがとうございます。

答えて

1

1)コマンドオブジェクトインスタンスをビューに渡す必要があります。キーに提供することによりcommandObjectにJSTLのフォームタグ点基準で

public ModelAndView myFunc(ModelAndView model) { 
    /* .... */ 
    ManufacturerDO commandObject = new ManufacturerDO; 
    model.addObject("productManufacturer", commandObject); 
    return model; 
} 

(オートワイヤリングを使用すると、コントローラのアクションに新しいインスタンスを作成していないしかし、私のアドバイス)

2):私はそれをこのように実行します。

<form:form method="post" commandName="productManufacturer"> 

3)あなたはJSTLのフォームタグでコマンドオブジェクトを提供するときは、すべてのフォーム要素のJSTLタグの属性「パス」でcommandObjectの名前を省略することができますので、のは、書いてみましょう:

<form:select path="manufacturerID"> 

4)もちろん、コマンドオブジェクトのクラスでgetterとsetterを忘れないでください。

+1

私はフィールドとしてproductmanufacturerオブジェクトを含む私のコマンドオブジェクトである製品のための上記の方法を使用しています。私はproductManufacturerのデータfields.howにアクセスしたいですか? – pavi

+0

ProductDOクラスは、そのフィールド製品の製造元にゲッターを持っていますか? –

+0

はい。パッケージcom.global.onlineShop; パブリッククラスProductDO { \t \tメーカーDO製品メーカー; \t \t公共ManufacturerDO getProductManufacturer(){ \t \tリターンproductManufacturer。 \t} \t公共ボイドsetProductManufacturer(ManufacturerDO productManufacturer){ \t \t this.productManufacturer = productManufacturer。 \t} \t }上記の貼り付けのコードが動作しない場合、私はそれが動作するようにする方法任意のアイデアを持っていない、形 – pavi

関連する問題