その一部が 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 に設定する必要があります。しかし、リストは空です。