別ウィンドウに画面を表示する方法

P1[S2JSF]別ウィンドウに画面を表示する方法


S2JSFに限った事ではなく、JSFでも当てはまると思いますが、
submitボタンを使った場合に別ウィンドウに表示させる方法です。


当初、formのtargetをJavascriptで変える方法をとっていましたが、
これではだめで、window.openを使って明示的にウィンドウを開かないと動作がおかしくなります。
#元のウィンドウのボタンをおすと再描画だけされる。
おそらく、JSFで管理しているVIEWとのずれがそのような動作を引き起こすと思われます。

というわけで、その方法は

1.トリガーとなるボタンのアクションは次に表示したい(ポップアップで表示させたい)画面のアクションを設定する。
  再描画した時に次画面のURLをセットするためのhiddenを用意しておく。
2.処理の後、hiddenに表示させたいHTMLの値をDTOに設定し、戻り値をnull(つまり元の画面)にしておく
3.元の画面を表示するときにonloadのタイミングで1で用意したhiddenの値を読み取り、
  値がセットされている場合にその値(url)をwindow.openで開くようにする。
  *URLは元の画面からの相対パスで大丈夫です。
4.めでたく別ウィンドウで画面が表示されます。

下記のURLが参考になりました。
http://forum.java.sun.com/thread.jspa?forumID=427&threadID=573329