2013-06-05 111 views
2

我想用這種方式編寫代碼,如果我點擊某個按鈕,數據表就會出現數據填充。在此之前,不應該有數據表。想要用按鈕點擊後顯示填充數據的數據表

<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()返回應該在數據填充table.and它工作數據的列表。

<p:dataTable value="#{searchBean.listUser}" var="user"> 
    <p:column headerText="Trigram"> 
     <h:outputText value="#{searchBean.trigram}"/> 
    </p:column> 
</p:dataTable> 

它點擊按鈕後顯示在數據表中,但數據表出現在按鈕點擊空字段之前。如何修改我的代碼以顯示讓我的按鈕單擊後數據表出現? 代碼在<h:form>標記內。

而受管豆searchBean位於@ViewScoped

回答

3

可以初始化一個簡單的getter/setter:

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屬性。

相關問題