ДА!Давайте вместе найдем способ (предположим, что вы предоставили список по умолчанию для компонента dataTable):
<p:dataTable ...with various attributes... id="myTable" value="#{myBean.recordList}">
...and various columns...
</p:dataTable>
<h:selectOneMenu value="...">
<f:selectItems ...your items...>
<p:ajax event="change" listener="#{myBean.myMethod}" update="myTable" />
</h:selectOneMenu>
И myMethod
будет методом, в котором вы измените recordList
, а затем обновите (обновите)компонент таблицы.Конечно, вы должны поместить внешний компонент формы.
ОБНОВЛЕНИЕ: Если вы хотите, чтобы в столбце dataTable уже были реализованы разные столбцы, и отображать / скрывать их на основе вашего выбора (ответ BalusC):
<p:dataTable ...with various attributes... id="myTable" value="#{myBean.recordList}">
<p:column rendered="#{myBean.myValue == 1}" >
first column
</p:column>
<p:column rendered="#{myBean.myValue == 2}" >
second column
</p:column>
<p:column rendered="#{myBean.myValue == 3}" >
third column
</p:column>
</p:dataTable>
<h:selectOneMenu value="#{myBean.myValue}">
<f:selectItem itemLabel="First Column" itemValue="1" />
<f:selectItem itemLabel="Second Column" itemValue="2" />
<f:selectItem itemLabel="Third Column" itemValue="3" />
<p:ajax event="change" update="myTable" />
</h:selectOneMenu>