【问题标题】:Wicket 6.1 AjaxEventBehavior and form components with ModelsWicket 6.1 AjaxEventBehavior 和带有模型的表单组件
【发布时间】:2012-10-07 14:49:06
【问题描述】:
final Address address = new Addres();
Form form = new Form("addressInputForm");
this.add(form);
form.setOutputMarkupId(true);

FormComponent fc;

fc = new RequiredTextField("street", new AddressModel(new Model(address), AddressModelType.STREET_MODEL));
fc.add(StringValidator.maximumLength(30));
fc.setLabel(new ResourceModel("label.street"));
form.add(fc);

form.add(new AjaxButton("submitAddressInput", form){

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form){                
            System.out.println(address.toString());
        }

        @Override
        protected void onError(AjaxRequestTarget target, Form<?> form){
            //
        }
    });

AjaxEventBehavior behavior = new AjaxEventBehavior("keyup"){

        @Override
        protected void onEvent(AjaxRequestTarget target) {
            System.out.println(address.toString());
        }
    };

    form.add(behavior);

我创建了一个关于这个问题的小例子。

基本上,当人们在名为“street”的字段中插入一个值时,正如您可以从代码中预期的那样,它会激活行为并运行 onEvent() 方法。 onEvent() 将打印出变量地址。不幸的是 address.street 值为 NULL。所以它会打印出“Street: NULL”。

但是当用户单击提交数据的 ajax 按钮时,Wicket 会将表单中的所有数据通过 AddressModel 加载到地址变量中。例如,最终结果将是“Street: Bond street”。

我的问题是,在 AjaxEventBehavior 案例中,如何启动将数据保存到地址变量的过程?

【问题讨论】:

    标签: ajax wicket wicket-1.6


    【解决方案1】:

    使用将提交组件值的 AjaxFormComponentUpdatingBehavior。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多