ICE Facesでポップアップ画面を出すには、JavaScriptでwindow.open()してしまわずに、ICE Facesのポップアップ機能を使う方がいいらしい。
確かに、ポップアップとは言えブラウザのウィンドウが新しく開くわけでもないし、ポップアップ元画面が操作できなくなることで、いろいろ処理を簡略できるかもしれないし。
とりあえず、備忘録メモメモということで、JSP側はこんな感じ。
<ice:panelGroup rendered="#{TestPage.isPopupDisplay}">
<ice:panelPopup draggable="false" modal="true" autoCentre="false"
visible="#{TestPage.isPopupDisplay}"
style="background-color: white;
background-image:url('./image/wall.jpg');
background-repeat: repeat-x;">
<f:facet name="header">
<ice:panelGrid>
<ice:panelGroup>
<ice:outputText value="ポップアップテスト"/>
</ice:panelGroup>
</ice:panelGrid>
</f:facet>
<f:facet name="body">
<ice:panelGroup styleClass="popupBody">
~HTMLのBODY部分~
</ice:panelGroup>
</f:facet>
</ice:panelPopup>
</ice:panelGroup>
そしたら後は、ポップアップ画面を呼び出すアクションメソッドが走ったときにManagedBean側でisPopupDisplayをtrueにしてあげれば、ICE Facesのポップアップ画面が出る、という寸法。
元画面が透過グレーアウトされて、その上にポップアップのウィンドウが出てくる。
このポップアップを消すには、閉じるボタンを実装してそのボタンのアクションメソッドが走ったときにisPopupDisplayをfalseにしてあげるだけ。
JavaScriptで開くポップアップよりも管理が楽な反面、ポップアップ元画面とポップアップ画面を比較しながら作業をしたい用途ではとても不便かもしれない。
コメント