按F5时如何刷新Wicket中的动态内容?

时间:2013-04-25 20:23:46

标签: java apache refresh wicket

我实现了一个MatchPage,它显示以下信息:

  • MatchStatus(OPEN / CLOSED)
  • 获奖者(获奖者姓名)
  • 表格上传文件

(点击链接查看它的样子,[1]:http://www10.pic-upload.de/25.04.13/klmy9fe8cgk3.png

现在问题来了。我们假设有人正在报告结果,而另一个人当前正在打开特定的MatchPage。报告完成后,MatchStatus将从OPEN变为CLOSED,颜色将从OPEN = green变为CLOSED = red,Winner将被设置,上传文件的Form将消失(参见[2]:{{3 }})。

报告结果的玩家将看到更新的MatchPage,而另一个仍然会看到旧版本的MatchPage,即使他刷新了浏览器。

我可以使用自己的LoadableDetachableModel来解决OPEN / CLOSED的问题:

@Override
public String load()
{
    Match m = dao.getMatchFromID(match_id);
    String result = "OPEN";

    if (m.getClosed())
    {
        result = "CLOSED";
        reportForm.setVisible(false); //does not work
        colorBehavior.setColor("red"); //does not work

    }

    return result;
}

我的MatchPage上的标签:

matchStatus = new Label("matchStatus", new MyMatchModel(m.getMatch_id(), matchDAO, reportForm));

正如您在load()方法中看到的那样,将reportForm设置为不可见并将颜色设置为红色不起作用。

知道如何解决这类问题吗?当用户按下F5 /刷新浏览器时,如何使表单消失并将颜色更改为红色。

1 个答案:

答案 0 :(得分:1)

您应该覆盖表单的“isVisible()”方法,如下所示:

public boolean isVisible() {
  return !yourModel.getObject().getClosed();
}