我使用wicket listview爲每一行創建了一個複選框和一個文本框。在取消設置ajaxcheckbox時,listview中的wicket textarea被清除
當用戶選中複選框時,我可以成功設置相關的布爾值 。
但我需要加一個限制。只有一個複選框可以選擇 以提交以下結構中的表單。
textarea的複選框 textarea的複選框 textarea的複選框 textarea的複選框
我鍵入到當我取消設置我所選擇的複選框的textareas被除去的文本。 據我所知,以下行用於防止此問題,但它不起作用。你有什麼主意嗎?
listView.setReuseItems(true);
public class CheckBoxListPage extends WebPage {
private Form inputForm;
public CheckBoxListPage()
{
add(inputForm = new InputForm("inputForm"));
}
private class InputForm extends Form
{
private List<NameWrapper> data;
public InputForm(String name)
{
super(name);
data = new ArrayList<NameWrapper>();
data.add(new NameWrapper("one"));
data.add(new NameWrapper("two"));
data.add(new NameWrapper("three"));
data.add(new NameWrapper("four"));
final ListView<NameWrapper> listView = new ListView<NameWrapper>("list", data)
{
protected void populateItem(ListItem<NameWrapper> item) {
final NameWrapper wrapper = (NameWrapper)item.getModelObject();
item.add(new Label("name", wrapper.getName()));
final CheckBox checkBox = new CheckBox("check", new PropertyModel<Boolean>(wrapper, "selected"));
item.add(checkBox);
checkBox.add(new OnChangeAjaxBehavior() {
@Override
protected void onUpdate(AjaxRequestTarget target) {
if (wrapper.getSelected()) {
for (NameWrapper entity : data) {
if (!entity.equals(wrapper)) {
entity.setSelected(Boolean.FALSE);
}
}
}
target.addComponent(inputForm);
}
});
}
};
listView.setReuseItems(true);
add(listView);
}
}