Хотите показать таблицу данных, заполненную данными после нажатия кнопки
Я хочу написать код следующим образом: если я нажму на кнопку, появится таблица данных, заполненная данными. до этого не должно быть таблицы данных в поле зрения.
<p:commandButton value="Go" styleClass="apply_button" actionListener="#{searchBean.getUserList}">
<f:attribute name="trigram" value="#{searchBean.trigram}"/>
<f:attribute name="firstName" value="#{searchBean.firstName}"/>
<f:attribute name="lastName" value="#{searchBean.lastName}"/>
</p:commandButton>
здесь метод getUserList() возвращает список данных, которые должны быть заполнены в таблице данных, и он работает.
<p:dataTable value="#{searchBean.listUser}" var="user">
<p:column headerText="Trigram">
<h:outputText value="#{searchBean.trigram}"/>
</p:column>
</p:dataTable>
Он отображается в таблице данных после нажатия кнопки, но таблица данных появляется до нажатия кнопки с пустыми полями. Как я могу изменить свои коды, чтобы отображать таблицу данных после нажатия моей кнопки? Коды в пределах <h:form>
Тег.
И управляемый боб searchBean
в @ViewScoped
,
1 ответ
Решение
Вы можете инициализировать простой метод получения / установки:
private boolean visible = false; // getter/setter
public void getUserList(ActionEvent event)
{
setVisible(true);
// Your code
}
И измените ваше мнение так:
<p:commandButton value="Go" styleClass="apply_button" actionListener="#{searchBean.getUserList}" update="table-wrapper">
<f:attribute name="trigram" value="#{searchBean.trigram}"/>
<f:attribute name="firstName" value="#{searchBean.firstName}"/>
<f:attribute name="lastName" value="#{searchBean.lastName}"/>
</p:commandButton>
<h:panelGroup id="table-wrapper">
<p:dataTable rendered="#{searchBean.visible}" value="#{searchBean.listUser}" var="user">
<p:column headerText="Trigram">
<h:outputText value="#{searchBean.trigram}"/>
</p:column>
</p:dataTable>
</h:panelGroup>
Обратите внимание update
атрибут на кнопку, h:panelGroup
обертка и rendered
атрибут на столе.