ボタンをクリックして送信ボタンをクリックすると(このコードはレンダリングされますが、フォーム処理は動作しません)、奇妙なスタックトレースが発生します。例クラス:ListMultipleChoice(wicket 1.5.4)のモデル
public class SamplePage extends WebPage {
private List<String> list = Arrays.asList(new String[] { "item1", "item2", "item3" });
private List<String> selectedItem = Arrays.asList(new String[] { "item1" });
public SamplePage(final PageParameters parameters) {
super(parameters);
Form<?> form = new Form<Void>("form");
form.add(new Button("submin") {
@Override
public void onSubmit() {
System.out.println("Selected");
for (String tag : selectedItem)
System.out.println(tag);
}
});
ListMultipleChoice<String> selector = new ListMultipleChoice<>("itemSelector",
new PropertyModel<List<String>>(this, "selectedItem"), list);
add(form);
form.add(selector);
}
public List<String> getSelectedItem() {
return selectedItem;
}
public void setSelectedItem(List<String> selectedItem) {
this.selectedItem = selectedItem;
}
}
Caused by: java.lang.UnsupportedOperationException
at java.util.AbstractList.remove(AbstractList.java:161)
at java.util.AbstractList$Itr.remove(AbstractList.java:374)
at java.util.AbstractList.removeRange(AbstractList.java:571)
at java.util.AbstractList.clear(AbstractList.java:234)
at org.apache.wicket.markup.html.form.FormComponent.updateCollectionModel(FormComponent.java:1531)
at org.apache.wicket.markup.html.form.ListMultipleChoice.updateModel(ListMultipleChoice.java:369)
at org.apache.wicket.markup.html.form.Form$FormModelUpdateVisitor.component(Form.java:221)
at org.apache.wicket.markup.html.form.Form$FormModelUpdateVisitor.component(Form.java:192)
at org.apache.wicket.util.visit.Visits.visitPostOrderHelper(Visits.java:273)
at org.apache.wicket.util.visit.Visits.visitPostOrderHelper(Visits.java:261)
at org.apache.wicket.util.visit.Visits.visitPostOrder(Visits.java:244)
at org.apache.wicket.markup.html.form.FormComponent.visitComponentsPostOrder(FormComponent.java:388)
at org.apache.wicket.markup.html.form.Form.internalUpdateFormComponentModels(Form.java:1701)
at org.apache.wicket.markup.html.form.Form.updateFormComponentModels(Form.java:1666)
at org.apache.wicket.markup.html.form.Form.process(Form.java:827)
at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:762)
at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:692)
... 31 more
私は問題を理解してどのように定義モデルであるが、(私は多くの方法を試してみましたが、問題を確認していなかった)理由を私は理解していません。私は同じようにDropDownChoiceを作成したとき、すべてが正常に働いていたが、この場合には、私は
new PropertyModel<List<String>>(this, "selectedItem")
とは対照的に
new PropertyModel<String>(this, "field")
を使用し、私はそれが非常に愚かな間違いだと思うし、あなたの助けをお願いします。
1分前このミスを発見しました。それは本当にばかげていた!ありがとうございました。 – pushistic