Java 在Wicket中更改提交按钮的文本字段

Java 在Wicket中更改提交按钮的文本字段,java,wicket,Java,Wicket,我的面板中有一个简单的按钮,定义如下: item.add(new Button("favButton") { public void onSubmit() { User.getCurrentUser().fav(book); } }); 该按钮在html文件中的外观如下所示: <td><button type="submit" class="btn btn-

我的面板中有一个简单的按钮,定义如下:

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);
            ....
。。。。。
IModel textModel=new AbstractReadOnlyModel(){
公共字符串getObject(){
返回已添加?getString(“removeFav”):getString(“addFav”);
}
};
最终表单buttonForm=新表单(“buttonForm”);
添加(新的AjaxButton(“favButton”,textModel){
@凌驾
提交时受保护的无效(AjaxRequestTarget目标,
表格({
super.onSubmit(target,buttonForm);
目标。添加(此);
}
});
添加(新的AjaxButton(“readButton”,textModel){
@凌驾
提交时受保护的无效(AjaxRequestTarget目标,
表格({
super.onSubmit(target,buttonForm);
目标。添加(此);
}
});
添加项(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>


但仍然不起作用。

最简单的解决方案是:

  • 改用
  • 给按钮一个模型
。。。因此,它会自动更改“值”属性:

IModel<String> textModel = new AbstractReadOnlyModel<String>() {
    public String getObject() {
        return added ? getString("removeFav") : getString("addFav");
    }
};
new Button("favButton", textModel) { };
IModel textModel=new AbstractReadOnlyModel(){
公共字符串getObject(){
返回已添加?getString(“removeFav”):getString(“addFav”);
}
};
新按钮(“favButton”,textModel){};

似乎没有任何效果。html文件应该是什么样的?也许我做错了。