PrimeFacesのrenderedをOFFにしたタグを、AJAX(update)で更新しても描画されない!!
【詳細】
概要の通り。renderedに要素が空かどうかで表示非表示を切り替えようとしたが、updateで更新しても表示されない。
調べてみると、どうやらrenderedがfalesの場合、そもそもブラウザ上に表示されない。つまり、「タグも生成されない」
なので、いくらajaxで更新しても何もおこらないと・・・
update要素で存在しないIDを指定するとエラーになるがそれはあくまでfaceletのチェックのようなのでスルーされる模様。
ダメなコード
<p:fileUpload fileUploadListener="#{controller.handleFileUpload}" mode="advanced" dragDropSupport="true" update="messages,buttonEffect,labelFileName" sizeLimit="100000" allowTypes="/(\.)(csv)$/"/> <p:panelGrid columns="2"> <p:outputLabel value="#{disp.Name}"/> <p:outputLabel id="labelFileName" value="#{controller.file.fileName}" rendered="#{!empty controller.file}"/> </p:panelGrid>
正解サンプル
<p:panel visible="#{!empty controller.file}">
<p:outputLabel id="labelFileName" value="#{controller.file.fileName}" />
</p:panel>
PrimeFacesのpanelタグにはvisible属性があるようなので↑のようなコードであれば表示非表示を簡単に切り替えられる。
あとは、styleにdisplayかvisibleをしていするか。(true:falseで指定できないのでめんどくさいかな)
【残課題】
なし
0 件のコメント:
コメントを投稿