私が間違っていることを理解するのにいくつか問題があります。
私がやること:
- アプリケーションで getHomePage() をオーバーライドします。MyStartPage.class を返します。
- MyStartPage は MySubPage のサブクラスです。
- MySubPage は MySuperPage のサブクラスです。
- MySuperPage に Panel を追加します。この Panel には、TextField のバッキング modelObject を出力する AjaxEventBehavior(onclick) を持つ TextField と WebMarkupContainer があります。
サーバーを起動して localhost/MyApp を参照するとどうなりますか:
- WebMarkupContainer をクリックしたときにユーザー入力がなくても、印刷された modelObject は null です。
サーバーを起動し、localhost/MyApp を参照し、アプリ内の別のページに移動してから MyStartPage に戻るとどうなりますか:
- 印刷された modelObject は、WebMarkupContainer をクリックしたときのユーザー入力と一致します。
また、次のことを行うときにも機能します。
アプリケーションで getHomePage() をオーバーライドし、MyLoginPage を返します。MyLoginPage には MySigninPanel が含まれています。MySigninPanel では、次のように onSignInSucceeded() をオーバーライドします。
@Override protected void onSignInSucceeded() { setResponsePage(new MyStartPage()); }
ユーザーが最初に WebMarkupContainer をクリックしたときに TextField を適切に機能させる正しい方法について、誰かが光を当てることができますか?
前もって感謝します!
//編集 :
これは Firefox のみの問題のようですが、少なくとも Chrome IE9 と IE9 の IE8 モードでは問題なく動作しています。