我試圖實現AJAXfied Wicket列表視圖。在我的研究中,我偶然發現了this site上的代碼並修改了一下。模型未更新AJAX提交鏈接調用
模型未正確更新。所以無論何時在文本字段中輸入值,都會被遺忘,如果AJAX提交鏈接被調用(文本字段爲空)。爲什麼會發生?我沒有看到這個代碼的任何問題。 Wicket版本是1.5.2。
下面是Java代碼:
// Initialization of form
...
// List all rows
ArrayList<String> rows = new ArrayList<String>(2);
rows.add(new String());
rows.add(new String());
final ListView<String> lv = new ListView<String>("rows", rows) {
@Override
protected void populateItem(ListItem<String> item) {
int index = item.getIndex() + 1;
item.add(new Label("index", index + "."));
TextField<String> text = new TextField<String>("text", item.getModel());
item.add(text);
}
};
rowPanel.add(lv);
AjaxSubmitLink addLink = new AjaxSubmitLink("addRow", form) {
@Override
protected void onError(AjaxRequestTarget target, Form<?> form) {
if (target != null) target.add(rowPanel);
}
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
lv.getModelObject().add(new String());
if (target != null) target.add(rowPanel);
}
};
addLink.setDefaultFormProcessing(false);
rowPanel.add(addLink);
...
這裏是標記:如anwser
<div wicket:id="rowPanel">
<span wicket:id="rows">
<span wicket:id="index">1.</span>
<input type="text" wicket:id="text"/>
</span>
<a href="#" wicket:id="addRow">Add row</a>
</div>
您可以調用列表中的setReuseItems(true)。此外,你可以看看這裏的例子:http://wicketinaction.com/2008/10/repainting-only-newly-created-repeater-items-via-ajax/ – bert
@bert請重新發表您的評論作爲回答。這極有可能是正確的答案,並且也將OP指向正確的方向與鏈接。如果你不這樣做,我會的! :-) –
@XaviLópez:謝謝,會做。很高興我毆打你的答案;) – bert