当我在第一个Textfield中键入内容时,我想在第二个文本字段中更新值

时间:2012-03-12 12:07:35

标签: wicket

如何用wicket实现它。 当在第二个文本字段中输入的单个数字自动相同的更改出现在第一个文本字段中: 我的代码:

txtLtpPriceCE.add(new AjaxFormSubmitBehavior("onkeyup") {
        @Override
        protected void onSubmit(AjaxRequestTarget target) {
            System.out.println(txtLtpPriceCE.getInput());
            showCalculatorModel.setTxtIntrinsicValueCE(txtLtpPriceCE.getInput());
            target.addComponent(txtIntrinsicValueCE);
         }

         @Override
         protected void onError(AjaxRequestTarget target) {
             throw new UnsupportedOperationException("Not supported yet.");
         }
});

我的组件:

final TextField txtLtpPriceCE = new TextField("txtLtpPriceCE",
             new PropertyModel(showCalculatorModel, "txtLtpPriceCE"));
item.add(txtLtpPriceCE);

final TextField txtIntrinsicValueCE = new TextField("txtIntrinsicValueCE",
             new PropertyModel(showCalculatorModel, "txtIntrinsicValueCE"));
item.add(txtIntrinsicValueCE);
txtIntrinsicValueCE.setOutputMarkupId(true);

2 个答案:

答案 0 :(得分:4)

如果您希望文本字段始终具有相同的值,则应为两者使用一个模型。然后你只需要更新其他文本字段。

IModel<String> model = new Model<String>();
TextField<String> textfield1 = new TextField<String>("field1", model);
textfield1.setOutputMarkupId(true);
TextField<String> textfield2 = new TextField<String>("field2", model);
textfield2.add(new AjaxFormComponentUpdatingBehavior("onkeyup") {
  protected void onUpdate(AjaxRequestTarget target) {
      target.addComponent(textfield1);
  }
});

答案 1 :(得分:1)

在第一个组件上添加行为(onUpdate)。然后更新第二个组件的模型,最后更新第二个组件(将其添加到请求目标)。

yourFirstComponent.add(new AjaxFormComponentUpdatingBehavior("onchange") {
      @Override
      protected void onUpdate(AjaxRequestTarget target) {
          yourSecondComponentModelValue = yourFirstComponentModelValue;
          target.addComponent(yourSecondComponent);
      }
});