Я призываю вас поддержать, ребята.
Я использую JSF 2.0. Primefaces и 2.2.1.
Мне нужно обновить <p:datatable>
, когда выбрана строка на другом <p:datatable>
. Оба на одной странице.
Когда выбран Заказчик, он хотел бы отобразить свои соответствующие Стороны.
Примечание: не хочу работать с FetchType.EAGER в моем EntityBean.
Ниже приведен код:
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...
}
Примечание: A Клиент не имеет ни одного, одного или нескольких Part ies.
Когда я меняю <p:datatable>
на <h:datatable>
все работает нормально.
Спасибо за любую помощь или пример кода.