Java 按F5时如何刷新Wicket中的动态内容?
我实现了一个MatchPage,其中显示以下信息:Java 按F5时如何刷新Wicket中的动态内容?,java,apache,refresh,wicket,Java,Apache,Refresh,Wicket,我实现了一个MatchPage,其中显示以下信息: 匹配状态(打开/关闭) 获胜者(获胜者姓名) 用于上载文件的窗体 (按照链接查看它的外观,[1]:) 现在问题来了。假设有人正在报告结果,而另一个人当前已打开特定的匹配页面。报告完成后,MatchStatus将从OPEN变为CLOSED,颜色将从OPEN=绿色变为CLOSED=红色,赢家将被设置,上传文件的表单将消失(请参见[2]:) 报告结果的玩家将看到更新的MatchPage,而另一个玩家即使刷新了浏览器,仍将看到旧版本的MatchPa
- 匹配状态(打开/关闭)
- 获胜者(获胜者姓名)
- 用于上载文件的窗体
@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;
}
我的匹配页面上的标签:
matchStatus = new Label("matchStatus", new MyMatchModel(m.getMatch_id(), matchDAO, reportForm));
正如您在load()方法中看到的,将reportForm设置为不可见并将颜色设置为红色不起作用
你知道我怎样才能解决这样的问题吗?当用户按下F5/刷新浏览器时,如何使窗体消失并将颜色更改为红色。您应该像这样覆盖窗体的“isVisible()”方法:
public boolean isVisible() {
return !yourModel.getObject().getClosed();
}
您应该像这样重写表单的“isVisible()”方法:
public boolean isVisible() {
return !yourModel.getObject().getClosed();
}
设置可见性后,是否重新呈现页面?此外,我不会打赌用户知道他必须按F5或刷新。如果有必要,我会使用
ajaxselfUpdatengTimerBehavior
。设置可见性后,是否重新呈现页面?此外,我不会打赌用户知道他必须按F5或刷新。如果必要的话,我会使用ajaxselfUpdatengTimerBehavior
。或者更好地覆盖onConfigure
,在那里setVisible(yourModel.getObject().getClosed())
,因为isVisible()
在渲染期间被多次调用,而onConfigure()
只调用一次。当他到达DB时,这可能会提高性能。是的,+1。不过,在同一个请求中,模型不会加载多次(在页面呈现之后才会序列化)。它对表单有效,但是如何通过ColorBehavior更改颜色呢?相同的过程?好的,通过创建我自己的标签并重写onConfigure()或更好的重写onConfigure
解决了这个问题,在那里setVisible(yourModel.getObject().getClosed())
因为isVisible()
在渲染期间被多次调用,而onConfigure()
只调用一次。当他到达DB时,这可能会提高性能。是的,+1。不过,在同一个请求中,模型不会加载多次(在页面呈现之后才会序列化)。它对表单有效,但是如何通过ColorBehavior更改颜色呢?相同的过程?好的,通过创建我自己的标签并覆盖onConfigure()解决了这个问题