Erro ao excluir com premifaces 3.4

Pessoal boa tarde, fiz um sistema com o primifaces 3.0 e o meu método de excluir não funcionava de jeito nenhum, quando eu mudei para o primifaces 2.2 ele funcionou tranquilamente, sem mudaro código, felizmente eu tenho que trabalhar com a versão 3.0 em diante, vou colocar o erro abaixo, se tiver alguém que possa me ajudar…

ERRO

16:01:01,684 ERROR [stderr] (http--0.0.0.0-8080-4) java.lang.IllegalArgumentException: id to load is required for loading

ManagedBen

[code]public void eliminar() throws StartupException {

    FuncionarioFacade.removerFuncionario(funcionario);
	
	FacesContext context = FacesContext.getCurrentInstance();  
    context.addMessage(null, new FacesMessage("Funcionario removido com sucesso!"));  
    funcionario = new Funcionario();
}[/code]

[code]XHTML

<h:body>
<ui:composition template="/WEB-INF/facelets/template.xhtml">
<ui:define name=“conteudoPagina”>

		<!-- Formilario de botão novo Cliente -->
		<h:form>
			<p:commandButton value="&nbsp;Novo Funcionario" actionListener="#{funcionarioBean.prepararInserir()}"
			 update=":frmNovo:pgNovo" oncomplete="dlgNovo.show();" icon="icom-add"  />

		</h:form><br/>
<h:form id="frmFuncionarios">  
    <p:dataTable id="datatable" var="funcionario" value="#{funcionarioBean.funcionarios}"
                   emptyMessage="Não existem Integrantes disponíveis!"
                   paginator="true" rows="10" paginatorPosition="bottom" 
                   paginatorTemplate="  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"  
                   rowsPerPageTemplate="5,10,15">  
        <p:column headerText="ID">  
            <h:outputText value="#{funcionario.idFuncionario}" />  
        </p:column>  
  
        <p:column headerText="Nome" filterBy="#{funcionario.nome}">  
            <h:outputText value="#{funcionario.nome}" />  
        </p:column>  
  
        <p:column headerText="Cargo">  
            <h:outputText value="#{funcionario.cargo}" />  
        </p:column>  
     <p:column style="width:15% text-aling: center">  
            <p:commandButton  update=":frmEditar:pgEditar" actionListener="#{funcionarioBean.prepararAtualizar(funcionario.idFuncionario)}"
                              oncomplete="dlgEditar.show();"  icon="icom-edit" title="Editar" />  
            <p:commandButton  update=":frmEliminar" oncomplete="dlgEliminar.show();"  icon="icom-delete" title="Eliminar" />  
           
    </p:column>  
    
    
    </p:dataTable>  
</h:form>  

<!-- Form Novo Funcionario --> 
<h:form id="frmNovo">

     <p:dialog header="Novo Funcionario" widgetVar="dlgNovo" resizable="false" id="dlgNovo" modal="true">  
     
     
    <p:growl id="growlNovo" sticky="true" /> 
    <h:panelGrid id="pgNovo" columns="2" cellpadding="4" style="margin:0 auto;"> 
    
        <h:outputText value="Nome:" /> 
        <h:outputText value="Cargo:" />  
        <p:inputText value="#{funcionarioBean.funcionario.nome}" style="width: 200px" />
        <p:inputText value="#{funcionarioBean.funcionario.cargo}" style="width: 200px" />
        
        &nbsp;
        
    </h:panelGrid>  
    <p:separator />
    
    <!-- Salvar e Cancelar -->
      <p:commandButton value="&nbsp;Salvar"  update=":frmFuncionarios:datatable, growlNovo, dlgNovo"
                       actionListener="#{funcionarioBean.inserir()}" oncomplete="dlgNovo.hide()" icon="icom-salvar"  />  
      <p:commandButton  value="&nbsp;Cancelar" update=":frmFuncionarios:datatable" oncomplete="dlgNovo.hide()"
                        icon="icom-cancelar"  /> 
      
    </p:dialog>  

</h:form>
<h:form id="frmEditar">
   <p:dialog header="Editar Funcionario" widgetVar="dlgEditar" resizable="false" id="dlgEditar" modal="true">  
        <p:growl id="growlEditar" sticky="true" /> 
        <h:panelGrid id="pgEditar" columns="2" cellpadding="4" style="margin:0 auto;"> 
    
        <h:outputText value="Nome:" /> 
        <h:outputText value="Cargo:" />  
        <p:inputText value="#{funcionarioBean.funcionario.nome}" style="width: 200px" />
        <p:inputText value="#{funcionarioBean.funcionario.cargo}" style="width: 200px" />
        
        &nbsp;
        
    </h:panelGrid>  
    <p:separator />
    
    <!-- Salvar e Cancelar -->
      <p:commandButton value="&nbsp;Atualizar"  update=":frmFuncionarios:datatable, growlEditar, dlgEditar"
                       actionListener="#{funcionarioBean.atualizar()}" oncomplete="dlgEditar.hide()" icon="icom-salvar"  />  
      <p:commandButton  value="&nbsp;Cancelar" update=":frmFuncionarios:datatable" oncomplete="dlgEditar.hide()"
                       icon="icom-cancelar"  /> 
      
    </p:dialog>  

</h:form>

<!-- DELETAR FUNCIONARIO -->
    <h:form id="frmEliminar">  
       <p:growl id="growlEliminar" sticky="true" />  
      
    <p:confirmDialog id="dlgEliminar" message="Deseja Deletar este Funcionario?"  
                header="Deletar Funcionario" severity="alert" widgetVar="dlgEliminar">  
                  
        <p:commandButton value="&nbsp;Eliminar"  update=":frmFuncionarios:datatable, growlEliminar, dlgEliminar"
                       actionListener="#{funcionarioBean.eliminar()}" oncomplete="dlgEliminar.hide()" icon="icom-salvar"  />  
      <p:commandButton  value="&nbsp;Cancelar" update=":frmFuncionarios:datatable" oncomplete="dlgEliminar.hide()"
                       icon="icom-cancelar"  />   
                  
    </p:confirmDialog>  
  
</h:form>   





	</ui:define>
</ui:composition>

</h:body>

[/code]

Este mesmo codigo no primifaces 2.2 funciona direitinho.

Fala brow, coloca o " : " antes de cada passagem do seu update tem esses bugs mesmo no primefaces acima do 2.2

EX:

    <h:form id="frmEliminar">    
       <p:growl id="growlEliminar" sticky="true" />    
        
    <p:confirmDialog id="dlgEliminar" message="Deseja Deletar este Funcionario?"    
                header="Deletar Funcionario" severity="alert" widgetVar="dlgEliminar">    
                    
        <p:commandButton value=" Eliminar"  [b]update=":frmFuncionarios:datatable, :growlEliminar, :dlgEliminar" [/b] 
                       actionListener="#{funcionarioBean.eliminar()}" oncomplete="dlgEliminar.hide()" icon="icom-salvar"  />    
      <p:commandButton  value=" Cancelar" update=":frmFuncionarios:datatable" oncomplete="dlgEliminar.hide()"  
                       icon="icom-cancelar"  />     
                    
    </p:confirmDialog>    
    
</h:form>

[quote=goperzin]Fala brow, coloca o " : " antes de cada passagem do seu update tem esses bugs mesmo no primefaces acima do 2.2

EX:

    <h:form id="frmEliminar">    
       <p:growl id="growlEliminar" sticky="true" />    
        
    <p:confirmDialog id="dlgEliminar" message="Deseja Deletar este Funcionario?"    
                header="Deletar Funcionario" severity="alert" widgetVar="dlgEliminar">    
                    
        <p:commandButton value=" Eliminar"  [b]update=":frmFuncionarios:datatable, :growlEliminar, :dlgEliminar" [/b] 
                       actionListener="#{funcionarioBean.eliminar()}" oncomplete="dlgEliminar.hide()" icon="icom-salvar"  />    
      <p:commandButton  value=" Cancelar" update=":frmFuncionarios:datatable" oncomplete="dlgEliminar.hide()"  
                       icon="icom-cancelar"  />     
                    
    </p:confirmDialog>    
    
</h:form>[/quote]

Amigão boa noite, fiz como vc disse mais agora deu erro na página, vou te passar o erro.

[code]

00:40:04,922 Grave [javax.enterprise.resource.webcontainer.jsf.application] (http–0.0.0.0-8080-4) Error Rendering View[/jsf/FormFuncionario.xhtml]: javax.faces.FacesException: Cannot find component with identifier “:growlEliminar” referenced from “frmEliminar:j_idt52”.
at org.primefaces.util.ComponentUtils.findClientIds(ComponentUtils.java:273) [primefaces-3.4.jar:]
at org.primefaces.util.AjaxRequestBuilder.addIds(AjaxRequestBuilder.java:102) [primefaces-3.4.jar:]
at org.primefaces.util.AjaxRequestBuilder.update(AjaxRequestBuilder.java:90) [primefaces-3.4.jar:]
at org.primefaces.renderkit.CoreRenderer.buildAjaxRequest(CoreRenderer.java:196) [primefaces-3.4.jar:][/code]

Bom dia pessoal, será que alguém, já viu isso? é só o excluir mesmo…

Olá jeferson alves!

Não sei se você conseguiu descobrir o erro, tive problema tambem, então segue meu codigo que esta funcionando:

<h:body>
        <h:form prependId="false">
            <p:growl id="messages" />
            <h:panelGrid columns="2" cellpadding="5">
                <h:outputText id="msg" value="#{testeJSF.valor}"/>		
                <p:commandButton id="showDialogButton" value="Excluir" 
                                 onclick="confirmation.show()" type="button"/>
            </h:panelGrid>
            <p:confirmDialog id="confirmDialog" message="Deseja realmente excluir?"
                             header="Exclusão de destinos" severity="alert" widgetVar="confirmation">
                <p:commandButton id="confirm" value="Sim" update="messages msg" oncomplete="confirmation.hide()"
                                 actionListener="#{testeJSF.excluir}" />
                <p:commandButton id="decline" value="Não" onclick="confirmation.hide()" type="button" /> 
            </p:confirmDialog>

        </h:form>
    </h:body>


// e no ManangerBean 

@ManagedBean(name = "testeJSF")
@SessionScoped
public class TesteConfirme {

    private String valor = "Junior";

    public String getValor() {
        return valor;
    }

    public void setValor(String valor) {
        this.valor = valor;
    }

    public void excluir(ActionEvent actionEvent) {
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO,
                "Exluido com sucesso!", "");
        FacesContext.getCurrentInstance().addMessage(null, message);
        if (valor.equals("Junior")) {
            valor = "Silvio";
        } else {
            valor = "Junior";
        }

    }
}

Há mais uma coisa, usando <ui:composition template="… tive que usar o process="@this", como exemplo abaixo:

<p:confirmDialog id="confirmDialog" message="Tem certeza que deseja excluir?" appendToBody="true" 
          header="Excluir Perfil" severity="alert"  widgetVar="confirmation" >
         <p:commandButton id="confirm" value="Sim"  oncomplete="confirmation.hide()"  process="@this" update="@form" 
                actionListener="#{perfilControle.excluir}" />  
          <p:commandButton id="decline" value="Não" onclick="confirmation.hide()" type="button" />   

</p:confirmDialog>

[quote=tjunior]Há mais uma coisa, usando <ui:composition template="… tive que usar o process="@this", como exemplo abaixo:

[code]
<p:confirmDialog id=“confirmDialog” message=“Tem certeza que deseja excluir?” appendToBody=“true”
header=“Excluir Perfil” severity=“alert” widgetVar=“confirmation” >
<p:commandButton id=“confirm” value=“Sim” oncomplete=“confirmation.hide()” process="@this" update="@form"
actionListener="#{perfilControle.excluir}" />
<p:commandButton id=“decline” value=“Não” onclick=“confirmation.hide()” type=“button” />

</p:confirmDialog>
[/code][/quote]

Bom dia amigo, vlw mesmo pela força, mas não funciona, isso já tem uns 2 meses, sempre dá erro de ID, tipo o Xhtml não está enviando o id para ser excluído, vou te passar o meu erro, vc trabalha com primifaces 3.4 também.

[code]09:46:30,488 ERROR [stderr] (http–0.0.0.0-8080-3) java.lang.IllegalArgumentException: id to load is required for loading

09:46:30,489 ERROR [stderr] (http–0.0.0.0-8080-3) at org.hibernate.event.spi.LoadEvent.(LoadEvent.java:87)

09:46:30,490 ERROR [stderr] (http–0.0.0.0-8080-3) at org.hibernate.event.spi.LoadEvent.(LoadEvent.java:59)

09:46:30,490 ERROR [stderr] (http–0.0.0.0-8080-3) at org.hibernate.internal.SessionImpl.get(SessionImpl.java:867)

09:46:30,491 ERROR [stderr] (http–0.0.0.0-8080-3) at org.hibernate.internal.SessionImpl.get(SessionImpl.java:863)

09:46:30,491 ERROR [stderr] (http–0.0.0.0-8080-3) at org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:795)

09:46:30,493 ERROR [stderr] (http–0.0.0.0-8080-3) at org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:770)

09:46:30,493 ERROR [stderr] (http–0.0.0.0-8080-3) at org.jboss.as.jpa.container.AbstractEntityManager.find(AbstractEntityManager.java:193)

09:46:30,494 ERROR [stderr] (http–0.0.0.0-8080-3) at br.com.startup.s3.dao.ClienteDAOBean.remover(ClienteDAOBean.java:36)

09:46:30,495 ERROR [stderr] (http–0.0.0.0-8080-3) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

09:46:30,495 ERROR [stderr] (http–0.0.0.0-8080-3) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

09:46:30,496 ERROR [stderr] (http–0.0.0.0-8080-3) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

09:46:30,497 ERROR [stderr] (http–0.0.0.0-8080-3) at java.lang.reflect.Method.invoke(Unknown Source)[/code]

Trabalho sim.

Você está usando escopo de qual tipo, se não for sessão tenta para teste usar no managerBean @SessionScoped.

valeu

[quote=tjunior]Trabalho sim.

Você está usando escopo de qual tipo, se não for sessão tenta para teste usar no managerBean @SessionScoped.

valeu[/quote]

É este escopo mesmo, como falei na msg, no primifaces 2.2 tudo funciona, só da erro no 3.4, mas agora não posso mudar mais…