在我的表单中,我输入了文本,然后输入了dataView:
private class RegistrationForm extends Form<Table> {
private static final long serialVersionUID = 1L;
public RegistrationForm(final Table table) {
super("registrationForm", new CompoundPropertyModel<Table>(table));
setOutputMarkupId(true);
final TextField<String> text = new TextField<String>("name");
add(text);
DataView<Player> dataView = new DataView<Player>("rows", playerDataProvider) {
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(final Item<Player> listItem) {
...
在listItem上,我双击行时添加ajaxEventBehavior:
listItem.add(new AjaxEventBehavior("ondblclick") {
private static final long serialVersionUID = 1L;
@Override
protected void onEvent(final AjaxRequestTarget target) {
System.out.println(table.getName());
}
});
问题是当我双击表时,它打印null而不是我在输入TextField中的值。为什么呢
我尝试更新模型:
text.updateModel();
或从文本中获得价值:
System.out.println(table.getName() + "bbbbbbbbbbbbbbbbb" + text.getInput() + "vv"
+ text.getValue() + "ff");
但没有成功。
在形式上,我还提交了按钮,当我按下按钮时,所有想法都起作用。双击我有问题
最佳答案
AjaxEventBehavior
本身不提交表单,因此您没有获取文本字段值。您可以改用以下子类之一:AjaxFormComponentUpdatingBehavior
将仅提交其所附的一个FormComponent
。它需要附加到FormComponent,因此如果要将其附加到整个ListItem
,则必须使用以下内容:AjaxFormSubmitBehavior
将提交整个表格。这可能是您在这里需要的。
所有这些行为都包含在Wicket中,并且其Javadoc和源代码就在其中。对于Ajax内容,请检查AbstractAjaxBehavior
的子类,尤其是AjaxEventBehavior
的子类。