在我的表单中我输入了文本,然后是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) {
...
on 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");
但没有成功。
在表格中我也提交了按钮,当我按下它时,每个想法都有效。双击
我遇到了问题答案 0 :(得分:6)
AjaxEventBehavior
本身不提交表单,因此您无法获取文本字段值。您可以改为使用以下子类之一:
AjaxFormComponentUpdatingBehavior
只会提交附加的FormComponent
个ListItem
。它需要附加到FormComponent,因此如果要将其附加到整个AjaxFormSubmitBehavior
,则必须使用以下内容:AbstractAjaxBehavior
将提交整个表单。这可能是你需要的。所有这些行为都包含在Wicket中,他们的Javadoc就在那里,带有源代码。对于Ajax内容,请检查AjaxEventBehavior
的子类,特别是{{1}}的子类。