0

その一部が TextField である CustomListView を作成しました。ここで、エンティティの問題の値を設定します。

customListView = new ListView<Issue>("fields", issuesModel) {
        @Override
        protected void populateItem(final ListItem<Issue> item) {
        Issue issue = item.getModelObject();
        item.add(new label("name", issue.getName()));
        TextField<String> customTextField = new TextField("customTextField", new PropertyModel<String>(issue, "value"));
         item.add(customTextField);}}

次に、この ListView コンポーネントを追加するフォームがある別のクラスがあり、問題ごとにいくつかの TextField があり、そこに値を書き込むことができます。

IModel<List<Issue>> issuesModel = new CompoundPropertyModel<List<Issue>>(issueValues) {
        @Override
        public List<Issue> getObject() {

            issueValues = new ArrayList<Issue>();
            Issue issue;
            for (BasicIssue basicIssue : basicIssuesList) {
                issue = new Issue();
                issue.setName(basicIssue.getname());
                issueValues.add(issue);
            }
            return issueValues;
        }
    };

customListView = new CustomListView("customListView", issuesModel);
editBasicIssueForm = new Form("form") {
        @Override
        protected void onSubmit() {
        basicIssue.setIssues(issueValues);
 };
editIssuesForm.add(customListView); 

すべての問題のすべての TextFields に入力すると、最後の値のみが最後の問題に設定されます。以前の問題値はすべて NULL です。何が問題なのかわからない。

私の BasicIssue は次のようになります。

    @Entity
public class BasicIssue implements Serializable {
private Long id;
@OneToMany(cascade = CascadeType.ALL)
private List<Issue> issueList;
}

私はおそらく以前に何かを見逃していましたが、customListView で issuesModel を使用して課題の値を設定しています。フォームでは、この問題のリストを BasicIssue に設定する必要があります。しかし、リストは空です。

4

2 に答える 2

0
        final ListView<mappingListType> listPe = new ListView<mappingListType>("listPe",
            mappingList) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(ListItem<mappingListType> item) {

            CompoundPropertyModel<mappingListType> cmpdModel = new CompoundPropertyModel<mappingListType>(
                    item.getModelObject());
            item.setModel(cmpdModel);

            textField1 = new TextField<String>("textField1");
            item.add(textField1);               

            textField2 = new TextField<String>("textField2");
            item.add(textField2);


        }

    };

これは、compoundPropertyModel がどのよう
にコンポーネントにマップされ、必要な情報 (この場合は textField) が表示されるかを示す、私のアプリケーションの簡単な実例です。

問題を理解するのにも役立つことを願っています。

于 2013-11-13T06:17:23.103 に答える