2011-03-06 14 views
0

私のバインディングの問題を解決できませんでした。Spring MVCのJSPページバインドと混同しました

私は

<form:form modelAttribute="personAttribute" method="POST" action="${saveUrl}"> 
<td><form:input path="firstName"/></td> 
を持っている私は、JSPページ内の

model.addAttribute("personAttribute", new Person()); 

を持つコントローラで

Class Person { 

Private fname; 
private lname; 
public Address address; 

今一つの他のクラス

class Address { 

    private street; 
    private suburb; 
} 

1クラスPersonを持っていますこのevrrythng Uptill

は大丈夫ですが、私は

<td><form:input path="street"/></td> 

を追加するときに問題となります。私はどのように人と一緒にAdressオブジェクトを追加することができないのか分かりません。

私は

model.addAttribute("personAttribute", new Person(new Address())); 
    or 

    model.addAttribute("addressAttribute", new Address()); 
or 

td><form:input path="person.address.street"/></td> 

答えて

1

あなたはそのようなパスをバインドする必要があります。

<td><form:input path="address.street"/></td> 

あなたはバインディングでPersonオブジェクトの範囲内にあるためです。

+0

私は設定している

人のオブジェクトでは任意の違いを作るだろう –

+0

@パシャはいそれがあります。この場合は、[AutoPopulatingList](http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/util/AutoPopulatingList.html)をお勧めします。次に、あなたは 'addresses [1]、addresses [2]'のようなアドレスをバインドする必要があります... –

+0

実際には私は取得していませんが、値を挿入しています。 ur address.street(それがうまくいった)のように、今私はAddress []。streetのように書くことができます。リストまたはセットが春のフォームでバインドされているオンラインの例はありますか? –

0

次のコードを実行するために持っていることは正しい意味:

model.addAttribute("personAttribute", new Person()); 

これは、空のアドレスを含む空の属性を持つ人を初期化します。

アドレスが空でないことを確認するには、値を含むpersonインスタンスを渡す必要があります。たとえば、

Person person = new Person(); 
person.setFirstName("John"); 
person.setLastName("Smith"); 

Address address = new Address(); 
address.setStreet("#10 Avenue"); 
address.setSuburb("Cook"); 

person.setAddress(address); 

通常、データベースオブジェクトまたはデータソースから取得した値を人物オブジェクトに取り込むことができます。

+0

実際には、データベースに値を挿入しています。だから私は何かを説明してください私は、person.address.streetのようなJSPページで書く必要があります有効な名前です –

関連する問題