Я не могу обновить свои компоненты, когда я изменяю состояние компонента 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-компоненте.

/questions/39756937/kak-mne-zastavit-primefaces-p-selectonemenu-vyizvat-valuechangelistener/39756955#39756955

Надеюсь, поможет!!

Другие вопросы по тегам