在Wicket中的AjaxCheckBox上动态设置文本

时间:2016-02-03 18:53:55

标签: java wicket-6

我正在更改现有的Wicket页面,根据用户打开页面时的条件,在Java中设置文本和外观。大多数组件都可以很好地更新模型,但我仍然坚持使用AjaxCheckBox。

实例化复选框的代码大致是:

checkBox = new AjaxCheckBox("checkbox", new PropertyModel<Boolean>(this, "agreed")) {
  @Override
  protected void onUpdate(AjaxRequestTarget target) {
    target.add(installButton);}
  };
add(checkBox);

和Wicket标记是:

<div style="margin: 1em;">
    <input type="checkbox" wicket:id="checkbox">
    <wicket:message key="Config.Agree"/>
    </input><br/>
    <button wicket:id="installButton"><span wicket:id="buttonText"/></button><br/>
</div>

没有任何运气取出检票口:消息行和用Java设置文本,谷歌让我失望。任何提示?

1 个答案:

答案 0 :(得分:0)

没有什么比在SO上发布问题来从我们的常驻Wicket大师那里得到答案了......

答案是将wicket:message更改为span,将span绑定到标签,并将标签添加为复选框的子项。

新的Wicket标记:

<input type="checkbox" wicket:id="checkbox">
<span wicket:id="checkboxText">&nbsp;</span>
</input><br/>

新Java代码:

Model checkboxTextModel = Model.of("Default text");
Label checkboxText = new Label("checkboxText", checkboxTextModel);
checkBox = new AjaxCheckBox("checkbox", new PropertyModel<Boolean>(this, "agreed")) {
  @Override
  protected void onUpdate(AjaxRequestTarget target) {
    target.add(installButton);
  }
};
checkBox.add(checkboxText);
add(checkBox);

然后我可以使用checkboxTextModel.setObject(“my new string”)更改文本;以后。