Primefaces 2.2.1似乎不接受同一页上的两个表



我敦促你们的支持。

我使用的是JSF 2.0。底漆面和2.2.1。

当选择了另一个<p:datatable>上的行时,我需要更新一个<p:datatable>。两者都在同一页上。

当选择客户时,希望显示其各自的参与方。

注意:不想在我的EntityBean中使用FetchType.EAGER。

以下是代码:

clients.xhtml:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   
<html xmlns="http://www.w3.org/1999/xhtml"  
      xmlns:h="http://java.sun.com/jsf/html"  
      xmlns:f="http://java.sun.com/jsf/core"  
      xmlns:ui="http://java.sun.com/jsf/facelets"  
      xmlns:p="http://primefaces.prime.com.tr/ui">  
<body>  
  <h:form>
    <p:dataTable id="clientsTable" var="c" value="#{clientMB.clients}" paginator="true"  
        rows="10" selection="#{clientMB.selected}" selectionMode="single"
    onRowSelectUpdate="partiesTable">  
        <p:column>  
            <f:facet name="header">  
                <h:outputText value="Código" />  
            </f:facet>  
            <h:outputText value="#{c.id}" />  
        </p:column>  
        <p:column>  
            <f:facet name="header">  
                <h:outputText value="Nome" />  
            </f:facet>  
            <h:outputText value="#{c.nome}" />  
        </p:column>  
        <p:column>  
            <f:facet name="header">  
                <h:outputText value="Tipo" />  
            </f:facet>  
            <h:outputText value="#{c.tipo.nome}" />  
        </p:column>  
        <p:column>  
            <f:facet name="header">  
                <h:outputText value="Descrição" />  
            </f:facet>  
            <h:outputText value="#{c.descricao}" />  
        </p:column>  
    </p:dataTable>  
    <p:spacer height="10"/>  
    <p:dataTable id="partiesTable" var="i" value="#{clientMB.parties}"  
        paginator="false" rows="5">  
        <h:column>  
            <f:facet name="header">  
                <h:outputText value="Código" />  
            </f:facet>  
            #{i.id}  
        </h:column>  
        <h:column>  
            <f:facet name="header">  
                <h:outputText value="Nome" />  
            </f:facet>  
            #{i.nome}  
        </h:column>  
        <h:column>  
            <f:facet name="header">  
                <h:outputText value="Email" />  
            </f:facet>  
            #{i.email}  
        </h:column>  
        <h:column>  
            <f:facet name="header">  
                <h:outputText value="Último acesso" />  
            </f:facet>  
            #{i.ultimoAcesso}  
        </h:column>  
        <h:column>  
            <f:facet name="header">  
                <h:outputText value="Ativo?" />  
            </f:facet>  
            #{i.ativo?'Sim':'Não'}  
        </h:column>  
        <h:column>  
            <f:facet name="header">  
                <h:outputText value="Cargo" />  
            </f:facet>  
            #{i.cargo}  
        </h:column>  
    </p:dataTable>  
  </h:form>
</body>  
</html> 

ClientMB.java:

@ViewScoped
@ManagedBean
public class ClientMB {
    /**
     * DAOS
     */
    PartDAO interDao = new PartDAO();
    /**
     * BEAN PROPERTIES
     */
    //NOVO CLIENTE
    private Client novo = new Client();
    public Client getNovo() {
        return novo;
    }
    public void setNovo(Client novo) {
        this.novo = novo;
    }
    //CLIENTE SELECIONADO
    private Client selected = new Client();
    public Client getSelected() {
        return selected;
    }
    public void setSelected(Client selected) {
        this.selected = selected;
        this.parties = partDao.list(selecionado);
    }   
    //CLIENTES
    private List<Client> clients;
    public List<Client> getClients() {
        if(clients==null){
            clients = cliDao.list();
        }
        return clients;
    }
    //INTERLOCUTORES
    private List<Part> parties;
    public List<Part> getParties() {
        parties = partDao.list(selecionado);
        return parties;
    }    
    //ACTION HANDLERS...
}

注意:客户端没有、有一个或多个部件。当我用<h:datatable>更改<p:datatable>时,一切正常。

感谢您提供的任何帮助或示例代码。

似乎<p:datatable>即时行选择需要rowSelectListener属性和backingbean监听器方法才能正常工作。

尝试在backingbean中放入一个空的listener方法,并将属性添加到表中:

<p:dataTable id="clientsTable" var="c" 
             value="#{clientMB.clients}" paginator="true"  
             rows="10" selection="#{clientMB.selected}" 
             selectionMode="single"
             rowSelectListener="#{clientMB.onRowSelect}"
             onRowSelectUpdate="partiesTable">

在bean中:

public void onRowSelect(SelectEvent event) {
    // do something here or not  
}  

相关内容

  • 没有找到相关文章