次の情報を表示する MatchPage を実装しました。
- マッチステータス (OPEN/CLOSED)
- 受賞者(受賞者の名前)
- ファイルアップロードフォーム
([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 キーを押してブラウザを更新したときに、フォームを非表示にして色を赤に変更するにはどうすればよいですか。