2009-04-27 5 views
0

DynaFormとそれを使用しない場合。strutsで複数行の更新を行う良い方法はありますか?

Iは、例えば、POJOデータ転送オブジェクトを使用する人を希望:ストラットで

public class Person { 
    private Long id; 
    private String firstName; 
    private String lastName; 
    // ... getters/setters for the fields 
} 

我々が持っているでしょうアクションフォーム生きる:

public class PersonUpdateForm extends SLActionForm { 
    String organization; 
    Person[] persons; // all the people will be changed to this organization; they're names and so forth can be updated at the same time (stupid, but a client might desire this) 

    // getters/setters + index setters/getters for persons 

} 

はどう対応するHTMLになります。テキストをタグはこれを許可するJSPのように見える? List personsフィールドに切り替えてlazy-loading list(commons-collections)を使用すると、どのように変更されますか?

すべてのヘルプは大歓迎です!!!

(0.9?)のstruts-1.2でこれを行うには良い方法はないように思えますもっと文脈が必要な場合は私に知らせてください。

+0

さて、私はそれを理解したと信じています! BeanUtilsのpopulateメソッドによってgetPersons()メソッドが呼び出されるたびに、インデックス付きゲッターに要素を作成させるのが賢明です。 コードはまだ完成していますが、肯定的な結果が得られました。 3時30分です。私はしばらくこれに固執しています。誰も答えを知っているように見えなかったので、私はマスで頭に叩きたい。私自身の無知については...私は彼らに責任があります! – les2

答えて

1

さて、私はそれを理解したと信じています!そのトリックは、getPersons()メソッドがBeanUtilsのpopulateメソッドによって呼び出されるたびに、インデックス付きゲッターに要素を作成させることです。コードはまだ完成していますが、肯定的な結果が得られました。それは3時30分です。私はしばらくこれに固執しています。誰も答えを知っているように見えなかったので、私はマスで頭に叩きたい。私自身の無知については...私は彼らに責任があります!

public List<Person> getPersons() { 
    persons.add(new Person()); // BeanUtils needs to know the list is large enough 
    return persons; 
} 

もちろん、インデックス付きゲッターとセッターも追加してください。

私は実際にこれをどのように覚えましたか?上記の人物リストを転送する予定の最大サイズに事前に初期化する必要があります。これは、リストが最初に配列に変換され、次に配列の各要素にプロパティが設定され、最後にsetPersons(...)を使用してリストが戻されるためです。したがって、遅延ロードリストの実装や同様のアプローチ(上記のようなもの)を使用すると、strutsライブでは動作しません。ここでは、あなたがより詳細に行うために必要なものです:

private List<Person> persons = new ArrayList<Person>(MAX_PEOPLE); 
public MyConstructor() { for(int i = 0; i < MAX_PEOPLE; i++) persons.add(new Person()); } 

public List<Person> getPeopleSubmitted() { 
    List<Person> copy = new ArrayList<Person>(); 
    for(Person p : persons) { 
     if(p.getId() != null) copy.add(p); 
     // id will be set for the submitted elements; 
     // the others will have a null id 
    } 
    return copy; // only the submitted persons returned - not the blank templates 
} 

あなたは何をすべきか、基本的だそれ!しかし本当の疑問は、誰がストラットをもう使用しているのですか?

関連する問題