私は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);
...
そして、ここでは、マークアップ:
<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