Я не могу обновить свои компоненты, когда я изменяю состояние компонента selectOneButton
Я использую Primefaces для реализации моего веб-сайта, и я столкнулся с проблемой.
Я использовал selectOneButton
Компонент и в зависимости от того, какая кнопка выбрана, я хочу показать конкретную таблицу данных. Поэтому, когда я нажимаю кнопку 1, я хочу показать table1 и table2, когда я нажимаю кнопку2.
Это код, который я использую:
<p:selectOneButton
value="#{myBean.dataTableType}"
valueChangeListener="#{myBean.dataTableTypeChange}">
<f:selectItems value="#{myBean.dataTableTypes}"
var="type"
itemLabel="#{msg['datatable.type.'.concat(type)]}"
itemValue="#{type}" />
<p:ajax update="table1 table2"/>
</p:selectOneButton>
С этим кодом я не могу достичь того, что хочу:(
2 ответа
Вы должны объявить атрибут процесса для ajax со значением @this
, Этот атрибут говорит selectOneButton
установить значение в боб, когда произойдет какое-то событие для selectOneButtton
, И у вас будет фактическое значение для типа данных.
Теперь у вас его нет. И если у вас есть условие, например:
<ui:fragment rendered="#{myBean.dataTableType eq FirstTable}">
<p:datatable id="first_table">
...
</p:datatable>
</ui:framgent>
Условие возврата ложное.
Я думаю, что вы можете очень хорошо посмотреть на следующий пример и сохранить флаг рендеринга для ваших таблиц в слушателе, вызванном в bean-компоненте.
Надеюсь, поможет!!