我的面板中有一个简单的按钮,定义如下:
item.add(new Button("favButton") {
public void onSubmit() {
User.getCurrentUser().fav(book);
}
});
按钮在html文件中如下所示:
<td><button type="submit" class="btn btn-default" wicket:id = "favButton">Add to my favourites</button></td>
因此,默认情况下,其文本为:
添加到我的收藏夹
我想让它在点击后更改为以下内容:
从我的收藏中删除
并返回上一个(添加到我的收藏夹),如果它点击此状态。
我已经将按钮的状态保存在变量中,所以如何更改按钮的标签 根据那个变量?
修改
在svenmier的建议之后将其更改为以下内容:
Panel.java
.....
IModel<String> textModel = new AbstractReadOnlyModel<String>() {
public String getObject() {
return added ? getString("removeFav") : getString("addFav");
}
};
final Form<?> buttonForm = new Form<Object>("buttonForm");
buttonForm.add(new AjaxButton("favButton", textModel) {
@Override
protected void onSubmit(AjaxRequestTarget target,
Form<?> form) {
super.onSubmit(target, buttonForm);
target.add(this);
}
});
buttonForm.add(new AjaxButton("readButton", textModel) {
@Override
protected void onSubmit(AjaxRequestTarget target,
Form<?> form) {
super.onSubmit(target, buttonForm);
target.add(this);
}
});
item.add(buttonForm);
....
Panel.html
<form action="" wicket:id="buttonForm">
<td><input wicket:id="favButton" type = "submit"/></td>
<td><input wicket:id="readButton" type = "submit" /></td>
</form>
仍然没有工作。
答案 0 :(得分:1)
最简单的解决方案就是:
<input type="button">
代替...因此它会自动更改value属性:
IModel<String> textModel = new AbstractReadOnlyModel<String>() {
public String getObject() {
return added ? getString("removeFav") : getString("addFav");
}
};
new Button("favButton", textModel) { };