【发布时间】:2013-04-19 21:32:19
【问题描述】:
我已经实现了一个显示以下信息的 MatchPage:
- 匹配状态(打开/关闭)
- 获胜者(获胜者姓名)
- 上传文件的表格
(点击链接查看外观,[1]:http://www10.pic-upload.de/25.04.13/klmy9fe8cgk3.png)
现在问题来了。假设,某人正在报告结果,而另一个人当前打开了特定的 MatchPage。报告完成后,MatchStatus 会从 OPEN 变为 CLOSED,颜色将从 OPEN=green 变为 CLOSED=red,获胜者将被设置,上传文件的表单将消失(见 [2]:http://www7.pic-upload.de/25.04.13/9diu5bcbws9.png )。
报告结果的玩家会看到更新后的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/刷新浏览器时,如何使表单消失并将颜色更改为红色。
【问题讨论】:
-
设置可见性后是否重新渲染页面?我也不会打赌用户知道他必须按 F5 或刷新。如果有必要,我会使用
AjaxSelfUpdatingTimerBehavior。
标签: java apache refresh wicket