Amigos,
Esse código estava funcionando, não entendo porque agora parou de funcionar.
Quando eu clico no botão remover, ele me abre um pop-up perguntando se de fato a exclusão deve ocorrer. Só que ao confirmar, agora ele tenta excluir um objeto null, ou seja dá erro. Pq o Datatable está retornando null e não o objeto de fato?
Aqui está a declaração do datatable
<p:dataTable id="partidos" var="partido"
value="#{partidosBean.listaPartidos}" rowKey="#{partido.id}"
selection="#{partidosBean.partidoSelecionado}"
selectionMode="single" style="width:60%">
Aqui o commandButton que deve abrir o pop-up
<p:commandButton id="btRemover" icon="ui-icon-trash"
title="Remover" onclick="confirmaExclusao.show();">
</p:commandButton>
Para todos os efeitos, segue o código inteiro:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition 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.org/ui"
xmlns:prog="http://prog.tiago.com.br"
template="/WEB-INF/templates/default.xhtml">
<ui:define name="conteudo">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<prog:confirmarExclusaoPartidoDialog id="confirmarExclusaoPartido" />
<prog:novoPartidoForm id="novoPartido" />
<h:form id="formPrincipal">
<p:growl id="growMensagens" showDetail="true" sticky="false"
autoUpdate="false" life="3000" />
<h:outputLabel value="Partidos políticos"
style="font-weight:bold;font-size:20px" />
<hr />
<br />
<p:dataTable id="partidos" var="partido"
value="#{partidosBean.listaPartidos}" rowKey="#{partido.id}"
selection="#{partidosBean.partidoSelecionado}"
selectionMode="single" style="width:60%">
<f:facet name="header">
Aqui você pode editar, excluir e criar novos partidos políticos.
</f:facet>
<p:column headerText="Partido" style="width:40%">
#{partido.partidoEleitoral}
</p:column>
<p:column headerText="Sigla" style="width:10%">
#{partido.sigla}
</p:column>
<p:column headerText="Código" style="width:10%">
#{partido.codigoPartidario}
</p:column>
<p:column headerText="Ativo?" style="width:08%">
#{partido.ativo? 'Sim':'Não'}
</p:column>
<p:column style="width:10%">
<h:panelGroup layout="horizontal">
<p:commandButton id="btEditar" icon="ui-icon-pencil"
actionListener="#{partidosBean.citar}" title="Editar">
</p:commandButton>
<p:commandButton id="btRemover" icon="ui-icon-trash"
title="Remover" onclick="confirmaExclusao.show();">
</p:commandButton>
</h:panelGroup>
</p:column>
<f:facet name="footer">
<p:commandButton id="btNovo" value="Adicionar novo partido"
icon="ui-icon-plusthick" oncomplete="novoPartidoDlg.show();"
actionListener="#{partidosBean.criarNovoPartido}" />
</f:facet>
</p:dataTable>
</h:form>
</ui:define>
</ui:composition>
E por fim, o componente criado que de fato exclui o objeto
<?xml version='1.0' encoding='UTF-8' ?>
<!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:p="http://primefaces.org/ui"
xmlns:ui="http://java.sun.com/jsf/facelets">
<ui:component>
<!-- Confirmação de exclusão de partido político -->
<h:form id="formExcluirPartido">
<p:confirmDialog id="confirmaExclusao" appendToBody="true"
message="Deseja realmente excluir o partido selecionado?"
header="Excluir partido" severity="alert"
widgetVar="confirmaExclusao">
<p:commandButton id="confirm" value="Sim, desejo"
actionListener="#{partidosBean.citar}"
oncomplete="confirmaExclusao.hide();"
update=":formPrincipal:growMensagens,:formPrincipal:partidos" />
<p:commandButton id="decline" value="Não, me enganei"
actionListener="#{partidoBean.citar}"
onclick="confirmaExclusao.hide()" type="button" />
</p:confirmDialog>
</h:form>
</ui:component>
</html>
Agradeço qualquer ajuda!!!
Você mudou alguma coisa lá no DAO
porque que eu falo
no método delete/remover la no dao
você precisa fazer um find pelo id
e isso não deve esta ocorrendo, por isso o valor vem nulo
caso não tenha mudado nada
tente escrever em tela o id da linha selecionada
Att
[quote=tmvolpato]Você mudou alguma coisa lá no DAO
porque que eu falo
no método delete/remover la no dao
você precisa fazer um find pelo id
e isso não deve esta ocorrendo, por isso o valor vem nulo
caso não tenha mudado nada
tente escrever em tela o id da linha selecionada
Att
[/quote]
Valeu amigo, mas quando eu debugo, percebo que ele não tá pegando o id, nem o objeto.
Se eu entrar com o id manualmente funciona, mas pq o objeto não tá sendo recuperado?
seu dialog esta em outra página?
ele funcionava assim antes em outra?
[quote]seu dialog esta em outra página?
ele funcionava assim antes em outra?[/quote]
Sim, o meu dialog está em outra página. Antes, quando estava num outro form, mas dentro do mesmo .xhtml funcionava.
Mesmo que eu coloque o form dentro da mesma página, não funciona mais. :roll:
eu tentei usar dialog fora da página e sem sucesso
mas nesse seu caso eu percebi o seguinte
só para testar volte seu dialog para a mesma página
dai depois que funciona você tenta trabalhar desse jeito
vamos lá então
segue o que deve ser mudado
Antes
<p:commandButton id="btRemover" icon="ui-icon-trash"
title="Remover" onclick="confirmaExclusao.show();">
</p:commandButton>
Depois
<p:commandButton id="btRemover" icon="ui-icon-trash"
title="Remover" onclick="confirmaExclusao.show();">
<f:setPropertyActionListener target="#{partidosBean.partidoSelecionado}" value="#{partido}" />
</p:commandButton>
Desse jeito você pega o item selecionado
Testa ai
Fiz o que você me pediu.
Meu código ficou assim:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition 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.org/ui"
xmlns:prog="http://prog.tiago.com.br"
template="/WEB-INF/templates/default.xhtml">
<ui:define name="conteudo">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<prog:novoPartidoForm id="novoPartido" />
<h:form id="formPrincipal">
<p:growl id="growMensagens" showDetail="true" sticky="false"
autoUpdate="false" life="3000" />
<h:outputLabel value="Partidos políticos"
style="font-weight:bold;font-size:20px" />
<hr />
<br />
<p:dataTable id="partidos" var="partido"
value="#{partidosBean.listaPartidos}" rowKey="#{partido.id}"
selectionMode="single" style="width:60%">
<f:facet name="header">
Aqui você pode editar, excluir e criar novos partidos políticos.
</f:facet>
<p:column headerText="Partido" style="width:40%">
#{partido.partidoEleitoral}
</p:column>
<p:column headerText="Sigla" style="width:10%">
#{partido.sigla}
</p:column>
<p:column headerText="Código" style="width:10%">
#{partido.codigoPartidario}
</p:column>
<p:column headerText="Ativo?" style="width:08%">
#{partido.ativo? 'Sim':'Não'}
</p:column>
<p:column style="width:10%">
<h:panelGroup layout="horizontal">
<p:commandButton id="btEditar" icon="ui-icon-pencil"
actionListener="#{partidosBean.citar}" title="Editar">
</p:commandButton>
<p:commandButton id="btRemover" icon="ui-icon-trash"
title="Remover" onclick="confirmaExclusao.show();">
<f:setPropertyActionListener target="#{partidosBean.partidoSelecionado}" value="#{partido}" />
</p:commandButton>
</h:panelGroup>
</p:column>
<f:facet name="footer">
<p:commandButton id="btNovo" value="Adicionar novo partido"
icon="ui-icon-plusthick" oncomplete="novoPartidoDlg.show();"
actionListener="#{partidosBean.criarNovoPartido}" />
</f:facet>
</p:dataTable>
</h:form>
<h:form id="formExcluirPartido">
<p:confirmDialog id="confirmaExclusao" appendToBody="true"
message="Deseja realmente excluir o partido selecionado?"
header="Excluir partido" severity="alert"
widgetVar="confirmaExclusao">
<p:commandButton id="confirm" value="Sim, desejo"
actionListener="#{partidosBean.citar}"
oncomplete="confirmaExclusao.hide();"
update=":formPrincipal:growMensagens,:formPrincipal:partidos" />
<p:commandButton id="decline" value="Não, me enganei"
actionListener="#{partidoBean.citar}"
onclick="confirmaExclusao.hide()" type="button" />
</p:confirmDialog>
</h:form>
</ui:define>
</ui:composition>
No entanto, continua sem funcionar. O retorno continua sendo null. :roll:
prog.tiago vo te ajuda o que ta acontecendo e erro de validação
e te explica isso vai demora muito vamos foca no seu problema
vc tem uma tem uma tabela e dentro dela um o p:commandButton com o f:setPropertyActionListener
digamos que ao ocorrer erro na tela o PrimeFaces não sabe o que submeter no formulário podemos ajulado com uma propriedade do p:commandButton o process
nele vc coloca o Id do componente que vc quer submeter no caso de DataTables id o da propria
Vo coloca os códigos aqui também pra facilita
<p:dataTable id="tablaProcedimento" value="#{procedimentoMb.proList}" var="procedimento"
selection="#{procedimentoMb.procedimento}" >
<p:column >
<f:facet name="header">
<h:outputText value="Código" />
</f:facet>
<h:outputText value="#{procedimento.codigo}" />
</p:column>
<p:column style=" width: 60px">
<p:commandLink process="@this tablaProcedimento" action="#{procedimentoMb.chamarProcediemtosPrarametros()}">
<h:graphicImage title="Vsualizar" url="/images/icons/edit-18.png" />
<f:setPropertyActionListener value="#{procedimento}" target="#{procedimentoMb.procedimento}" />
</p:commandLink>
</p:column>
</p:dataTable>
aqui esta uma simples tabela so com o nessesario pra ela funciona veja que o commandLink temos um
process="@this tablaProcedimento"
ele deve ser o Id da tabela se precisa adiciona mais basta dar um espaço e ir adicionando os ID/s
Marque como resolvido
Valeu Alcir,
Mas continua sem funcionar. Vou dar um banho de sal grosso nesse código hein.
Abraço
Boa tarde amigos,
Consegui resolver o meu problema
Utilizei o <f:selectPropertyActionListener/> para enviar os dados da view ao MB.
Vou postar o código inteiro para vocês verem:
partidos.xhtml
[code]<?xml version="1.0" encoding="UTF-8" ?>
<ui:composition 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.org/ui ”
xmlns:prog=“http://prog.tiago.com.br ”
template="/WEB-INF/templates/default.xhtml">
<ui:define name="conteudo">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<!-- COMPONENTES EXTERNOS -->
<prog:novoPartidoForm id="novoPartido" />
<prog:confirmarExclusaoPartidoDialog id="confirmarExclusao" />
<!-- FORMULÁRIO PRINCIPAL -->
<h:form id="formPrincipal">
<p:growl id="growMensagens" showDetail="true" sticky="false"
autoUpdate="false" life="3000" />
<h:outputLabel value="Partidos políticos"
style="font-weight:bold;font-size:20px" />
<hr />
<br />
<p:dataTable id="partidos" var="partido"
value="#{partidosBean.listaPartidos}" style="width:60%">
<f:facet name="header">
Aqui você pode editar, excluir e criar novos partidos políticos.
</f:facet>
<p:column headerText="Partido" style="width:40%">
#{partido.partidoEleitoral}
</p:column>
<p:column headerText="Sigla" style="width:10%">
#{partido.sigla}
</p:column>
<p:column headerText="Código" style="width:10%">
#{partido.codigoPartidario}
</p:column>
<p:column headerText="Ativo?" style="width:08%">
#{partido.ativo? 'Sim':'Não'}
</p:column>
<p:column style="width:10%">
<h:panelGroup layout="horizontal">
<p:commandButton id="btEditar" icon="ui-icon-pencil"
action="#{partidosBean.citar}" title="Editar">
<f:setPropertyActionListener value="#{partido}"
target="#{partidosBean.partidoSelecionado}">
</f:setPropertyActionListener>
</p:commandButton>
<p:commandButton id="btRemover" icon="ui-icon-trash"
action="#{partidosBean.citar}" title="Remover"
onclick="confirmaExclusao.show();">
<f:setPropertyActionListener value="#{partido}"
target="#{partidosBean.partidoSelecionado}">
</f:setPropertyActionListener>
</p:commandButton>
</h:panelGroup>
</p:column>
<f:facet name="footer">
<p:commandButton id="btNovo" value="Adicionar novo partido"
icon="ui-icon-plusthick" oncomplete="novoPartidoDlg.show();"
actionListener="#{partidosBean.criarNovoPartido}">
</p:commandButton>
</f:facet>
</p:dataTable>
</h:form>
</ui:define>
</ui:composition>[/code]
confirmarExclusaoPartido.xhtml
<?xml version='1.0' encoding='UTF-8' ?>
<!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:p="http://primefaces.org/ui"
xmlns:ui="http://java.sun.com/jsf/facelets">
<ui:component>
<!-- FORMULÁRIO PARA EXCLUSÃO DE PARTIDO -->
<h:form id="formExcluirPartido">
<p:confirmDialog id="confirmaExclusao" appendToBody="true"
message="Deseja realmente excluir o partido selecionado?"
header="Excluir partido" severity="alert"
widgetVar="confirmaExclusao">
<p:commandButton id="confirm" value="Sim, desejo"
actionListener="#{partidosBean.removerPartido}"
oncomplete="confirmaExclusao.hide();"
update=":formPrincipal:growMensagens,:formPrincipal:partidos" />
<p:commandButton id="decline" value="Não, me enganei"
onclick="confirmaExclusao.hide()" type="button" />
</p:confirmDialog>
</h:form>
</ui:component>
</html>
Agradeço imensamente a ajuda de todos. Sem dúvidas, esse fórum está me ensinando e muito à desenvolver boas soluções.
Um forte abraço à cada um.
Tem como voce informar o melhor a resolução do teu problema. Por exemplo este metodo partidoBean.citar o que ele faz?
Pessoal sou novo no primefaces e estou com um problema.
To tentando criar a principio uma tela simples de um crud usando templates.
No caso tenho um xhtml principal com algumas divisoes e chamo as telas no centro da divisão.
Ate ai tudo bem, a grade é exibida com os dados do banco so que nela existem dois botões onde ou posso editar ou excluir o registro.
No caso sempre quando tento excluir ou editar o objeto retorna sempre null.
Detalhe é que se eu utilizar o objeto ouputtext da certo, mais quando coloco inputtext da null
Vou postar o codigo para facilitar.
Aqui é meu template
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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.org/ui">
<f:view contentType="text/html">
<h:head>
<f:facet name="first">
<meta content='text/html; charset=UTF-8' http-equiv="Content-Type"/>
<title>Enquetes</title>
</f:facet>
<style type="text/css">
body {background-color: #eeeeee; font-size: 12px}
.semBorda tr, .semBorda td {
border: none !important;
}
</style>
</h:head>
<h:body>
<div align="center">
<h:form id="form">
<p:growl id="messages" showDetail="true"/>
<p:layout style="min-width:720px;max-width:1020px;min-height:700px;max-height:700px" id="tabela"> <!-- style="min-width:1020px;max-width:1020px;min-height:600px">-->
<p:layoutUnit position="north" size="80">
<ui:insert name="cabecalho">
<ui:include src="/template/estrutura/cabecalho.xhtml" />
</ui:insert>
</p:layoutUnit>
<p:layoutUnit position="west" size="200px" resizable="true" closable="false" collapsible="true" effect="drop">
<ui:insert name="menu">
<ui:include src="/menu/menu.xhtml" />
</ui:insert>
</p:layoutUnit>
<p:layoutUnit position="center">
<ui:insert name="centro">
</ui:insert>
</p:layoutUnit>
<p:layoutUnit position="south" closable="true" collapsible="true">
<ui:insert name="rodape">
<ui:include src="/template/estrutura/rodape.xhtml" />
</ui:insert>
</p:layoutUnit>
</p:layout>
<ui:insert name="dialog">
</ui:insert>
</h:form>
</div>
</h:body>
</f:view>
</html>
Enquete.xhtml
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.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.org/ui">
<f:view>
<ui:composition template="/template/padrao.xhtml">
<ui:define name="centro">
<p:dataTable id="dtEnq" var="enq" value="#{enqueteBean.listaEnquetes}" rowKey="#{enq.id_enquete}"
paginator="true" rows="15" rowsPerPageTemplate="5,10,15,20"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
selectionMode="single" editable="true" selection="#{enqueteBean.selecaoEnquete}">
<f:facet name="header">
Enquetes
</f:facet>
<p:ajax event="rowEdit" listener="#{enqueteBean.onEdit}" update=":form:messages" />
<p:ajax event="rowEditCancel" listener="#{enqueteBean.onCancel}" update=":form:messages" />
<p:column headerText="Código" sortBy="#{enq.id_enquete}" filterBy="#{enq.id_enquete}" style="width:10%" >
<h:outputText value="#{enq.id_enquete}" style="text-align:left"/>
</p:column>
<p:column headerText="Descrição" sortBy="#{enq.descricao}" filterBy="#{enq.descricao}">
<h:outputText value="#{enq.descricao}" />
</p:column>
<p:column headerText="Status" sortBy="#{enq.status}" filterBy="#{enq.status}" style="width:10%">
<h:outputText value="#{enq.status}" />
</p:column>
<p:column style="width:70px">
<f:facet name="header">
<h:outputText value="Ação"/>
</f:facet>
<p:commandLink id="edit" update=":form:carDetail" oncomplete="carDialog.show()" value="Editar">
<h:outputText styleClass="ui-icon ui-icon-search" style="margin:0 auto;" />
<f:setPropertyActionListener value="#{enq}" target="#{enqueteBean.selecaoEnquete}" />
</p:commandLink>
<h:outputText value="/"/>
<p:commandLink id="delete" update=":form:dtEnq" oncomplete="confirmation.show()" value="Excluir">
<h:outputText styleClass="ui-icon ui-icon-search" style="margin:0 auto;" />
<f:setPropertyActionListener value="#{enq}" target="#{enqueteBean.selecaoEnquete}" />
</p:commandLink>
</p:column>
</p:dataTable>
</ui:define>
<ui:define name="dialog">
<!--*******************************************-->
<!--Tela de confirmação de exclusão do registro-->
<!--*******************************************-->
<p:confirmDialog message="Deseja realmente excluir este registro: #{enqueteBean.selecaoEnquete.id_enquete}?" hideEffect="explode" header="Excluindo Enquete" severity="alert" widgetVar="confirmation" modal="true">
<!--caso seja sim chamo o metodo excluir, e fecho o modal com o oncomplete, tenho o process que estou dizendo para processar o form, e update para atualizar a tabela-->
<p:commandButton id="btnSim" value="Sim" oncomplete="confirmation.hide();" actionListener="#{enqueteBean.excluirEnquete}" process="@form" update="tabela" />
<!--caso seja não somente fecha o modal-->
<p:commandButton id="btnNao" value="Não" onclick="confirmation.hide();" type="button"/>
</p:confirmDialog>
<!--*******************************************-->
<!--Tela de Edição do registro-->
<!--*******************************************-->
<p:dialog header="Enquente" showEffect="fade" hideEffect="fade" modal="true"
widgetVar="carDialog">
<p:outputPanel id="carDetail" style="text-align:left;">
<p:graphicImage id="carImage" value="/img/ajaxLoader.gif"/>
<h:panelGrid columns="2" cellpadding="5">
<h:outputLabel for="txCod" value="Código: " />
<h:inputText id="txCod"
value="#{enqueteBean.selecaoEnquete.id_enquete}" />
<h:outputLabel for="txDesc" value="Descrição: " />
<h:inputText id="txDesc" size="60"
value="#{enqueteBean.selecaoEnquete.descricao}" />
<h:outputLabel for="txSt" value="Status: " size="10"/>
<h:inputText id="txSt" value="#{enqueteBean.selecaoEnquete.status}" />
</h:panelGrid>
<p:separator/>
<p:outputPanel id="botoes" layout="block">
<p:panelGrid columns="2" styleClass="semBorda" cellpadding="5">
<p:commandButton value="Salvar" />
<p:commandButton value="Cancelar" onclick="carDetail.hide();"/>
</p:panelGrid>
</p:outputPanel>
</p:outputPanel>
</p:dialog>
</ui:define>
</ui:composition>
</f:view>
</html>
Meu MB EnqueteBean
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.enquete.menagedbean;
import br.com.enquete.bean.Enquete;
import br.com.enquete.dao.EnqueteDAO;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import org.primefaces.event.RowEditEvent;
/**
*
* @author cf03612
*/
@ManagedBean(name = "enqueteBean")
@RequestScoped
public class EnqueteBean {
private EnqueteDAO enqueteDAO = new EnqueteDAO();
private Enquete selecaoEnquete = new Enquete();
private List<Enquete> enquetes;
public EnqueteBean() {
}
public void novaEnquete() throws ClassNotFoundException, SQLException {
enqueteDAO.novo(selecaoEnquete);
//para limpar o cached
enquetes = null;
}
public void alterarEnquete() throws ClassNotFoundException, SQLException {
enqueteDAO.alterar(selecaoEnquete);
//para limpar o cached
enquetes = null;
}
public void excluirEnquete() throws ClassNotFoundException, SQLException {
enqueteDAO.excluir(selecaoEnquete);
//para limpar o cached
enquetes = null;
}
public List<Enquete> getListaEnquetes() throws ClassNotFoundException, SQLException {
if (enquetes == null) {
enquetes = enqueteDAO.getAllEnquetes();
}
return enquetes;
}
public Enquete getSelecaoEnquete() {
return selecaoEnquete;
}
public void setSelecaoEnquete(Enquete selecaoEnquete) {
this.selecaoEnquete = selecaoEnquete;
}
}
Bom dia
Tenta mudar o escopo do ManagedBean de @RequestScoped para @ViewScoped ou SessionScoped.
Edson,
Tentei mais nao deu certo.
Percebi que ao retirar do template a pagina sozinha funciona contudo dentro do template sempre da esse erro.
varlue
Setembro 3, 2012, 12:00am
#15
Pessoal, queria aproveitar este post e pedir ajudar a vocês com o meu código abaixo. Estou tendo dificuldades quanto ao número de forms utilizados. Enfim, uma hora um form funciona, outra hora não … Agradeço a atenção.
<ui:composition template="index.xhtml"
xmlns ="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<ui:define name="top">
<h3>Chamadas</h3>
</ui:define>
<ui:define name="conteudo">
<h:form id="form_status">
<p:menubar>
<p:submenu label="Listar Chamadas">
<p:menuitem value="Pendentes" actionListener="#{problemaController.listarChamadasPendentes()}" update=":formGeral:tabelaChamadas"/>
<p:menuitem value="Em Andamento" actionListener="#{problemaController.listarChamadasAndamento()}" update=":formGeral:tabelaChamadas"/>
<p:menuitem value="Resolvidos" actionListener="#{problemaController.listarChamadasResolvidos()}" update=":formGeral:tabelaChamadas"/>
<p:menuitem value="Finalizados" actionListener="#{problemaController.listarChamadasFinalizados()}" update=":formGeral:tabelaChamadas"/>
</p:submenu>
</p:menubar>
</h:form> <br/>
<h:form id="formGeral">
<p:dataTable id="tabelaChamadas" value="#{problemaController.chamadas}" style="width: 600px;" var="chamadasTable">
<p:column>
<f:facet name="header"><h:outputText value="Título"/></f:facet>
#{chamadasTable.problema.titulo}
</p:column>
<p:column>
<f:facet name="header"><h:outputText value="Status"/></f:facet>
#{chamadasTable.estado}
</p:column>
<p:column>
<f:facet name="header"><h:outputText value="Atualizar Status"/></f:facet>
<h:form id="form_status">
<p:growl id="msg" showDetail="true" showSummary="true"></p:growl>
<h:selectOneMenu value="#{problemaController.aux}">
<f:selectItem itemLabel="Alterar Status" itemValue=""/>
<f:selectItem itemLabel="Em Andamento" itemValue="Andamento"/>
<f:selectItem itemLabel="Resolvido" itemValue="Resolvido"/>
<f:selectItem itemLabel="Finalizado" itemValue="Finalizado"/>
</h:selectOneMenu>
<p:commandButton process="form_status" id="alterar" value="Alterar" update="msg :formGeral:tabelaChamadas" action="#{problemaController.alterarStatus()}" oncomplete="popup.hide()"/>
</h:form>
</p:column>
<p:column>
<f:facet name="header"><h:outputText value="Mensagens"/></f:facet>
<p:commandButton value="Visualizar" update=":formGeral:painel" oncomplete="popup.show()">
<f:setPropertyActionListener value="#{chamadasTable}" target="#{problemaController.chamadaSuporte}"/>
</p:commandButton>
</p:column>
</p:dataTable>
<!-- Abre Dialog com Mensagens. -->
<p:dialog id="dialog" widgetVar="popup" header="Acompanhamento" width="500" resizable="false" appendToBody="true">
<p:scrollPanel id="painel" style="height: 300px; text-align: left">
<p:dataList id="dtList" value="#{problemaController.chamadaSuporte.mensagens}" rendered="#{not empty problemaController.chamadaSuporte.mensagens}" var="chamadas" itemType="square">
<h:outputText value="#{chamadas.remetente}: #{chamadas.texto}"/>
</p:dataList>
</p:scrollPanel>
<p:separator/>
</p:dialog>
</h:form>
</ui:define>
</ui:composition>
:oops: :oops: :oops: :oops: :oops:
Alguma sugestão ???
Cara o problema de usar vários form é esse que vc está encontrando, mais se vc analizar seu codigo perceba que o id=“form_status” esta duplicado, e pode esta havendo algum conflito. Mas fica a dica, organize muito bem seus form e economize sua utilização, pois já tive dor de cabeça com eles, geralmente “form” dentro de “form” costumam a anular algumas funcionalidades.
prog.tiago,
estou passando por um problema parecido com o seu. no meu caso, a diferenca é que o meu botao está fora da datatable e, consequentemente, tambem nao uso setPropertyActionListener . alguem sabe se tem que fazer algo a mais para funcionar?