1

次の情報を表示する 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 キーを押してブラウザを更新したときに、フォームを非表示にして色を赤に変更するにはどうすればよいですか。

4

1 に答える 1

1

次のように、フォームの「isVisible()」メソッドをオーバーライドする必要があります。

public boolean isVisible() {
  return !yourModel.getObject().getClosed();
}
于 2013-04-26T00:30:43.083 に答える