2013-04-25 74 views
1

我實現它顯示以下信息一個MatchPage:如何在按F5時刷新Wicket中的動態內容?

  • MatchStatus(開/關)
  • 得主(獲獎者的姓名)
  • 形式上傳文件

(請按照鏈接看看它的樣子,[1]:http://www10.pic-upload.de/25.04.13/klmy9fe8cgk3.png

現在問題來了。假設有人正在報告結果,而另一個人正在打開特定的MatchPage。報告完成後,MatchStatus將從OPEN變爲CLOSED,顏色將從OPEN =綠色變爲CLOSED =紅色,贏家將被設置,上傳文件的表單將消失(請參閱[2]:http://www7.pic-upload.de/25.04.13/9diu5bcbws9.png)。

報告結果的玩家將看到更新的MatchPage,而另一個玩家仍然會看到舊版本的MatchPage,即使他刷新了瀏覽器。

我能解決OPEN問題/用我自己的LoadableDetachableModel 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 /刷新瀏覽器時,如何使窗體消失並將顏色更改爲紅色。

+0

設置可見你重新渲染頁面後?我也不會打賭,用戶知道他必須按F5或刷新。如果這很重要,我會使用'AjaxSelfUpdatingTimerBehavior'。 – 2013-04-26 07:33:15

回答

1

你應該重寫「可見性()」這樣的形式的方法:

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

或者更好的重寫'onConfigure',那裏'setVisible(yourModel.getObject()。getClosed())'作爲'isVisible()'在渲染和'onConfigure()'過程中被多次調用一次。當他到達DB時,這可能會提高性能。 – 2013-04-26 07:36:28

+0

是,+1。儘管在相同的請求中,模型不會加載多次(直到頁面呈現之後纔會被序列化)。 – 2013-04-26 13:04:57

+0

恩,謝謝你們。它適用於表單,但通過ColorBehavior更改顏色又如何?同樣的程序? – 2013-04-26 16:46:01