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

时间:2014-11-27 03:26:05

标签: java wicket

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

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>

仍然没有工作。

1 个答案:

答案 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) { };