Erro ao excluir com premifaces 3.4

8 respostas
jeferson_alves

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

public void eliminar() throws StartupException {
		
        FuncionarioFacade.removerFuncionario(funcionario);
		
		FacesContext context = FacesContext.getCurrentInstance();  
        context.addMessage(null, new FacesMessage("Funcionario removido com sucesso!"));  
        funcionario = new Funcionario();
	}
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.org/ui">

<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/>


<!-- Form Lista Funcionario -->
	<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>  
	  
<!-- Butoon editar e excluir -->


         <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>

   <!-- Form Editar Funcionario --> 
	<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>


</html>

Este mesmo codigo no primifaces 2.2 funciona direitinho.

8 Respostas

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>
jeferson_alves
goperzin:
Fala brow, coloca o " : " antes de cada passagem do seu update tem esses bugs mesmo no primefaces acima do 2.2

EX:





header="Deletar Funcionario" severity="alert" widgetVar="dlgEliminar">

update=":frmFuncionarios:datatable, :growlEliminar, :dlgEliminar"
actionListener="#{funcionarioBean.eliminar()}" oncomplete="dlgEliminar.hide()" icon="icom-salvar" />
icon="icom-cancelar" />



Amigão boa noite, fiz como vc disse mais agora deu erro na página, vou te passar o erro.
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:]
jeferson_alves

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

tjunior

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";
        }

    }
}
tjunior

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>
jeferson_alves
tjunior:
Há mais uma coisa, usando
<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>

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.

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.<init>(LoadEvent.java:87)

09:46:30,490 ERROR [stderr] (http--0.0.0.0-8080-3) 	at org.hibernate.event.spi.LoadEvent.<init>(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)
tjunior

Trabalho sim.

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

valeu

jeferson_alves

tjunior:
Trabalho sim.

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

valeu

É 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…

Criado 26 de outubro de 2012
Ultima resposta 26 de nov. de 2012
Respostas 8
Participantes 3