Galera estou com problemas quando vou usar 2 dataTable no primefaces o primeiro é carregado no inicio da página e o segundo e carregado quando o primeiro é selecionado, até ai tudo funciona perfeitamente, o problema é que quando vou selecionar a linha do segundo ele não entra no método, alguém já passou por isso? Meu escopo é Request
Problema com 2 dataTable Primefaces
3 Respostas
A
posta o codigo da sua pagina e seu managedbean
t+
XHTML
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//Dp:column XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/Dp:column/xhtml1-strict.dp:column">
<html xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head>
<title>ISDRA - Gestão de Chamados</title>
<link rel="shortcut icon" href="imagens/isdra.ico"></link>
<style type="text/css">
.col1{
text-align: right;
color:#336699;
}
.col2{
text-align: left;
color:#336699;
}
</style>
</h:head>
<h:body>
<h:form prependId="false" id="frmCadastroStatus" style="font-size:7pt;">
<p:growl showDetail="true" id="messages"/>
<p:dataTable var="status" value="#{statusController.listaStatusBean}" paginator="true" rows="10"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15" id="tabelaStatus" selectionMode="single" update="messages"
emptyMessage="Nenhum registro encontrado." rowSelectListener="#{statusController.onRowSelect}" onRowSelectUpdate="frmCadastroStatus codStatusSaida">
<f:facet name="header" >
Lista de Status
</f:facet>
<p:column>
<f:facet name="header">
<h:outputText value="Imagem" />
</f:facet>
<center>
<h:graphicImage url="#{status.figuraPath}"/>
</center>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Código" />
</f:facet>
<h:outputText value="#{status.codStatus}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Descrição" />
</f:facet>
<h:outputText value="#{status.dscStatus}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Observações" />
</f:facet>
<h:outputText value="#{status.dscObservacao}" />
</p:column>
</p:dataTable>
<br/>
<p:toolbar>
<p:toolbarGroup align="left">
<p:commandLink ajax="true" action="#{statusController.novoStatus}" update="frmCadastroStatus tabelaStatus" title="Nova Status" >
<h:graphicImage url="imagens/novo.png" style="cursor:pointer;border: 0px solid;"/>
</p:commandLink>
<p:divider />
<p:commandLink ajax="true" action="#{statusController.salvarStatus}" update="frmCadastroStatus tabelaStatus messages" title="Salvar Status" style="text-decoration: none;">
<h:graphicImage url="imagens/salvar.png" style="cursor:pointer;border: 0px solid;"/>
</p:commandLink>
<p:divider />
<p:commandLink ajax="true" action="#{statusController.excluirStatus}" update="frmCadastroStatus tabelaStatus messages" title="Excluir Status" style="text-decoration: none;">
<h:graphicImage url="imagens/lixeira.png" style="cursor:pointer;border: 0px solid;"/>
</p:commandLink>
</p:toolbarGroup>
</p:toolbar>
<h:inputHidden value="#{statusController.statusBean.codStatus}"/>
<h:panelGrid columns="2" cellspacing="5" columnClasses="col1, col2">
<h:outputLabel value="Código" style="text-align: right;"/>
<p:inputText value="#{statusController.statusBean.codStatus}" style="width:50px;" disabled="true"/>
<h:outputLabel value="Descrição do Status "/>
<p:inputTextarea autoResize="true" value="#{statusController.statusBean.dscStatus}" style="width:400px;"/>
<h:outputLabel value="Enviar Email"/>
<h:panelGroup>
<h:selectBooleanCheckbox title="(Envia email para Usuário e Técnico do chamado)"
value="#{statusController.statusBean.flEnviarEmail}" />
<h:outputLabel value="(Envia email para Usuário e Técnico do chamado)"/>
</h:panelGroup>
<h:outputLabel value="Observações"/>
<p:inputTextarea autoResize="true" value="#{statusController.statusBean.dscObservacao}" style="width:400px;"/>
</h:panelGrid>
<br/>
<h:inputText value="#{statusController.statusBean.codStatusSaida}" id="codStatusSaida"/>
<p:dataTable var="statusSaida" value="#{statusController.listaStatusSaida}" paginator="true" rows="5"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5" id="tabelaStatusSaida" update="messages" selectionMode="single"
emptyMessage="Nenhum registro encontrado." rowSelectListener="#{statusController.onRowSelectSaida}">
<f:facet name="header" >
Lista de Status Saída
</f:facet>
<p:column>
<f:facet name="header">
<h:outputText value="Código" />
</f:facet>
<h:outputText value="#{statusSaida.codStatusSaida}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Descrição" />
</f:facet>
<h:outputText value="#{statusSaida.dscStatusSaida}" />
</p:column>
<f:facet name="footer">
<p:commandLink ajax="true" actionListener="#{statusController.excluirStatusSaida}" title="Excluir Status Saída" style="text-decoration: none;">
<h:graphicImage url="imagens/lixeira.png" style="cursor:pointer;border: 0px solid;"/>
</p:commandLink>
</f:facet>
</p:dataTable>
</h:form>
</h:body>
</html>
ManagedBean
@ManagedBean
@RequestScoped
public class StatusController {
ApplicationContext context = new ClassPathXmlApplicationContext(
"conexao.xml");
StatusDAO statusDAO = (StatusDAO) context.getBean("statusDAO");
private StatusBean statusBean;
private List<StatusBean> listaStatusBean;
private List<StatusBean> listaStatusSaida;
@PostConstruct
public void init(){
try{
statusBean = new StatusBean();
listaStatusBean = statusDAO.selectStatusListAll();
}catch (Exception e) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL,"ATENÇÃO", e.getMessage()));
e.printStackTrace();
}
}
@PreDestroy
public void destroy(){
statusBean = new StatusBean();
listaStatusBean = null;
listaStatusSaida = null;
}
public void onRowSelectSaida(SelectEvent event){
System.out.println(statusBean.getCodStatusSaida());
}
public void onRowSelect(SelectEvent event){
StatusBean status = new StatusBean();
status = (StatusBean) event.getObject();
try{
statusBean = statusDAO.selectStatus(status);
listaStatusSaida = statusDAO.selectStatusSaidaAll(statusBean);
}catch(Exception e){
e.printStackTrace();
}
}
public StatusBean novoStatus(){
statusBean = new StatusBean();
try{
listaStatusBean = statusDAO.selectStatusListAll();
listaStatusSaida = null;
}catch (Exception e) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL,"ATENÇÃO", e.getMessage()));
e.printStackTrace();
}
return statusBean;
}
public StatusBean salvarStatus(){
if(statusBean.getCodStatus() == null || statusBean.getCodStatus() == 0){
statusBean.setCodStatus(0);
try{
StatusBean status = statusDAO.insertStatus(statusBean);
statusBean.setCodStatus(status.getCodStatus());
listaStatusBean = statusDAO.selectStatusListAll();
if(!status.getpRetCodigo().equals(0)){
throw new Exception(status.getpRetMensagem());
}else{
FacesMessage msg = new FacesMessage("Atenção", status.getpRetMensagem());
FacesContext.getCurrentInstance().addMessage("messages", msg);
}
}catch(Exception e){
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL,"ATENÇÃO", e.getMessage()));
e.printStackTrace();
}
}else{
try{
StatusBean status = statusDAO.updateStatus(statusBean);
listaStatusBean = statusDAO.selectStatusListAll();
if(!status.getpRetCodigo().equals(0)){
throw new Exception(status.getpRetMensagem());
}else{
FacesMessage msg = new FacesMessage("Atenção", status.getpRetMensagem());
FacesContext.getCurrentInstance().addMessage("messages", msg);
}
}catch(Exception e){
FacesMessage msg = new FacesMessage("Atenção", e.getMessage());
FacesContext.getCurrentInstance().addMessage("messages", msg);
e.printStackTrace();
}
}
return statusBean;
}
public StatusBean excluirStatus(){
try{
statusBean = statusDAO.deleteStatus(statusBean);
listaStatusBean = statusDAO.selectStatusListAll();
if(!statusBean.getpRetCodigo().equals(0)){
throw new Exception(statusBean.getpRetMensagem());
}else{
FacesMessage msg = new FacesMessage("Atenção", statusBean.getpRetMensagem());
FacesContext.getCurrentInstance().addMessage("messages", msg);
}
}catch(Exception e){
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL,"ATENÇÃO", e.getMessage()));
e.printStackTrace();
}
statusBean = new StatusBean();
return statusBean;
}
public void excluirStatusSaida(){
System.out.println(statusBean.getCodStatusSaida());
}
public List<StatusBean> getListaStatusBean() {
return listaStatusBean;
}
public void setListaStatusBean(List<StatusBean> listaStatusBean) {
this.listaStatusBean = listaStatusBean;
}
public StatusBean getStatusBean() {
return statusBean;
}
public void setStatusBean(StatusBean statusBean) {
this.statusBean = statusBean;
}
public List<StatusBean> getListaStatusSaida() {
return listaStatusSaida;
}
public void setListaStatusSaida(List<StatusBean> listaStatusSaida) {
this.listaStatusSaida = listaStatusSaida;
}
}
A
cara,
vc ja tentou fazer assim, http://www.primefaces.org/showcase/ui/datatableRowSelectionSingle.jsf
PS: como vc tem que atualizar um input e datatable, vc nao precisa dar update no form todo somente nos dois id.
t+
Criado 1 de dezembro de 2011
Ultima resposta 1 de dez. de 2011
Respostas 3
Participantes 2