読者です 読者をやめる 読者になる 読者になる

PrimeFaces DataTable の ColumnToggler をサーバー側でも制御したい (5.1 では無理―)

ColumnToggler が何かは SHOWCASE で確認してください。
PrimeFaces ShowCase
でこれ基本的には、クライアント側だけの制御になります。
なので、初期表示に一部閉じておきたいとかの制御は基本出来ません。*1
が、Stateful Column Toggler | こんな記事が!!
という訳で出来るようになったみたいです。

大事なとこだけ抜粋してみると

 <f:facet name="header">
   <p:columnToggler datasource="cars" trigger="toggler">
     <p:ajax event="toggle" listener="#{dtBasicView.onToggle}" />
   </p:columnToggler>
 </f:facet>
  
 <p:column headerText="Id" visible="#{dtBasicView.list[0]}">
   <h:outputText value="#{car.id}" />
 </p:column>
 public void onToggle(ToggleEvent e) {
   list.set((Integer) e.getData(), e.getVisibility() == Visibility.VISIBLE);
 }

p:column の visible と p:columnToggler の toggle イベント がポイントですね。

で試そうとしたら、p:column に visible 属性が無い!!
ブログを最後まで読むと 5.1.3/5.2 から追加されたようです。

一般ユーザーはまだお預けですね。。

*1:がっつり JavaScript 書いたらいけるかも...