在我的表单中,我输入了文本,然后输入了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的子类。

10-02 06:43