如何根据<p:selectitem>动态更改<p:datatable>的值?</p:selectitem> </p:datatable>

时间:2013-11-28 15:01:21

标签: jsf-2 primefaces datatable selectonemenu

我正在使用jsf 2.0 et Primefaces。我有一个selectOneMenu,它具有与连接的用户相对应的动态数据值。我希望当我选择数据并单击按钮视图时,与所选数据相关的电子邮件列表将显示在dataTable上。

<p:panel>
    <p:selectOneMenu id="data" value="#{mailMB.database}" styleClass="auto" required="true" effect="fade" >  
        <f:selectItem itemLabel="Select Data" itemValue="" />  
        <f:selectItems value="#{dataMB.datas}" var="data" itemLabel="#{data.keyword}" itemValue="#{data.keyword}"/>                         
    </p:selectOneMenu>                           
    <p:commandButton value="View" action="#{mailMB.grabemails()}" ajax="true" update="datas" icon="ui-icon-circle-check" styleClass="ui-priority-primary" />           
</p:panel>
<p:panel id="panelform" header="Emails List"  >
    <p:dataTable value="#{mailMB.emailsByData}" var="item" id="datas"  rowsPerPageTemplate="5,10,15,20,25,30" 
                 paginator="true" rows="10" 
                 selectionMode="single"  filteredValue="#{mailMB.filteredMails}" rowKey="#{item.id}" 
                 selection="#{mailMB.selectedMail}">
        <p:ajax event="rowSelect" update=":form:dataView , :form:confirmDelete, :form:viewButton" listener="#{dataMB.onRowSelect}"/>
        <p:ajax event="rowToggle"  />  
        <p:column style="width:2%" exportable="false">  
            <p:rowToggler />  
        </p:column> 
        <p:column sortBy="#{item.email}" filterBy="#{item.email}">
            <f:facet name="header">
                <h:outputText value="Email"/>
            </f:facet>
            <h:outputText value="#{item.email}"/>
        </p:column>                   
    </p:dataTable>  
</p:panel>

这是我在托管Bean中的方法,它使用命名查询按数据返回电子邮件列表:

public List<Email> getEmailsByData() {
    System.out.println("the database" + getDatabase());
    return emailsByData = mailBusinessLocal.mails(getDatabase());
}

public List<Email> grabemails() {
    return emailsByData = mailBusinessLocal.mails(database);
}

当我选择数据并单击视图时,没有任何反应,数据库返回null,如glassfish日志中所示。

1 个答案:

答案 0 :(得分:0)

您需要将<p:selectOneMenu>放在<h:form>内。这是我的第一个猜测。