每次在 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);
我有按钮作为 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);