每次在 Wicket 中单击按钮时更改按钮文本

Changing button text everytime when button was clicked in Wicket

我有按钮作为 AjaxLink 和标签在里面。而且我想实现切换按钮以在每次单击时更改文本。所以假设按钮有初始文本“One”,点击后它应该是“Two”,再点击一次它应该是“一个” 等等。

<a wicket:id="myBtn" type="button">
    <span wicket:id="btnText"></span>
</a>
AjaxLink<Void> myBtn = new AjaxLink<>("myBtn") {
    @Override
    public void onClick(AjaxRequestTarget target) {
        someModel.toggle();
    }
};
Label btnText = new Label("btnText", someModel.map(on -> on ? "One" : "Two"));
btnText.setOutputMarkupId(true);
btnText.setOutputMarkupPlaceholderTag(true);
myBtn.add(btnText);
add(myBtn);

点击发生后我的标签没有重新呈现,怎么办?

您需要 target.add(btnText)onClick():

final Label btnText = new Label("btnText", someModel.map(on -> on ? "One" : "Two"));
btnText.setOutputMarkupId(true);    
AjaxLink<Void> myBtn = new AjaxLink<>("myBtn") {
   @Override
   public void onClick(AjaxRequestTarget target) {
     someModel.toggle();
     target.add(btnText);
   }
};
myBtn.add(btnText);
add(myBtn);