Javax.faces.el.MethodNotFoundException: RESOLVIDO

2 respostas
V

Ola All,

Estou tendo um certa dificuldade com JSF.

Tenho a seguinte mensagem de erro:

<?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:f="http://java.sun.com/jsf/core" 
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">

<ui:composition template="/template.jspx">

	<ui:define name="tela"> Consulta de Pessoas</ui:define>

	<ui:define name="corpo">
	
	<h:form id="frm">

		<head>
			<link rel="stylesheet" type="text/css" href="../css/estilo.css" />
		</head>

            <h1><h:outputText value="Consulta de Pessoas"/></h1>
            <h:messages layout="table" showSummary="true" showDetail="false" globalOnly="true" styleClass="msgErro" infoClass="msgInfo" style="font-weight: bold"/>
            
            <rich:simpleTogglePanel switchType="client" label="Tabela de Pessoas">
        
			<rich:dataTable id="pessoa" value="#{consultaPessoaBean.pessoa}" var="item" width="790px" styleClass="tabela" headerClass="cabecalhoTabela" rowClasses="linha1Tabela, linha2Tabela" rows="5">
				<rich:column sortBy="#{item.nome}"> <f:facet name="header">
					<h:outputText value="Nome"/> </f:facet>
					<h:outputText value="#{item.nome}"/> 
				</rich:column>
				<rich:column width="40px" style="text-align: center">
					<f:facet name="header"> 
					<h:outputText value="Acoes"/>
					</f:facet>
					
					<h:commandLink action="#{consultaPessoaBean.excluir}">
					<f:setPropertyActionListener value="#{item}" target="#{consultaPessoaBean.pessoaExclusao}"/>
					<h:graphicImage value="/imagens/excluir.png" title="Excluir" styleClass="imagemLink"/>
					</h:commandLink>
					
					<a4j:commandButton image="/imagens/editar.png"  
                		alt="Alterar dados do pessoa"  
                		actionListener="#{consultaPessoaBean.consultar}"
                		reRender="panelPessoa" 
                		oncomplete="Richfaces.showModalPanel('panelPessoa');">  
                		<f:setPropertyActionListener value="#{item}" target="#{cadastroPessoaBean.pessoaEdicao}"/>
                		<!--  <f:param id="idAlterar" name="idAlterar" value="#{item}" />  -->  
            		</a4j:commandButton>
					
					<!--
					<h:commandLink action="cadastroPessoa">
					<f:setPropertyActionListener value="#{item}" target="#{cadastroPessoaBean.pessoaEdicao}"/>
					<h:graphicImage value="/imagens/editar.png" title="Editar" styleClass="imagemLink"/>
					</h:commandLink>
					-->
								 
				</rich:column>
			</rich:dataTable>
			<br/>
			<rich:datascroller for="pessoa" maxPages="20" align="left"/>
			
			</rich:simpleTogglePanel>   
			
            <br/>
            <rich:separator/>
            <br/>
            <h:commandLink action="#{cadastroPessoaBean.inicializar}" styleClass="linkComEspaco">
                <h:outputText value="Nova Pessoa"/> </h:commandLink>
            <h:commandLink action="menu">
                <h:outputText value="Menu do sistema"/>
            </h:commandLink>
	</h:form>
	<!-- Modal Panel para alteração dos dados do cliente -->  
	<a4j:form id="formModal" ajaxSubmit="true" reRender="panelPessoa">  
    	<rich:modalPanel id="panelPessoa" width="700" height="400">  
        	<f:facet name="header">  
            	<h:outputText value="Alteração Cadastral" />  
        	</f:facet>  
        	<f:facet name="controls">  
            	<h:graphicImage value="/imagens/close.png"  
                	onclick="Richfaces.hideModalPanel('panelPessoa')" />  
        	</f:facet>  
        	<h:panelGrid columns="4" id="alterar">  
				<h:panelGrid columns="2"> 			
				<h:outputLabel value="Codigo:" rendered="#{cadastroPessoaBean.pessoaEdicao.id != null}"/>
				<h:panelGroup rendered="#{cadastroPessoaBean.pessoaEdicao.id!= null}">
					<h:inputText id="codigo" size="10" value="#{cadastroPessoaBean.pessoaEdicao.id}" label="Codigo da pessoa" disabled="true"/> 
					<h:message for="codigo" showSummary="true" showDetail="false" styleClass="msgErro"/>
				</h:panelGroup>
				<h:outputLabel value="Nome:"/> 
				<h:panelGroup>
					<h:inputText id="nome" size="40" maxlength="150" value="#{cadastroPessoaBean.pessoaEdicao.nome}" required="true" label="Nome"/>
					<h:message for="nome" showSummary="true" showDetail="false" styleClass="msgErro"/>
        		</h:panelGroup>
				<h:panelGroup/>
			
				<br/>
			
				<h:panelGroup>

			        <a4j:commandButton value="Alterar" id="idAlterar" 
            			action="#{cadastroPessoaBean.salvar}">
        			</a4j:commandButton>
			        <a4j:commandButton value="Cancelar" id="idCancelar" 
			        	reRender="pessoa" 
            			onclick="Richfaces.hideModalPanel('panelPessoa')">  
        			</a4j:commandButton>        
        			<rich:componentControl for="cadastrarPessoa" attachTo="alterar" operation="show" event="onclick" />
         		</h:panelGroup>
				</h:panelGrid>
        	</h:panelGrid>  
    	</rich:modalPanel>  
	</a4j:form>  
	<!-- Fim do modal panel -->
	</ui:define>
</ui:composition>
</html>
package br.com.financeiro.visao;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;

import br.com.financeiro.dominio.Pessoa;
import br.com.financeiro.negocio.PessoaService;
import br.com.financeiro.negocio.RegraNegocioException;

public class CadastroPessoaBean {

	private Pessoa pessoaEdicao;
	private List<SelectItem> pessoas;
	
	public String inicializar() { 
		this.pessoaEdicao = new Pessoa();  
		return "cadastroPessoa";	
	}
	
	public void salvar(ActionEvent event) {
		FacesContext context = FacesContext.getCurrentInstance(); 
		try {
			new PessoaService().salvar(this.pessoaEdicao); 
			this.pessoaEdicao = new Pessoa();
			FacesMessage msg = new FacesMessage("Pessoa salva com sucesso!"); 
			msg.setSeverity(FacesMessage.SEVERITY_INFO); context.addMessage(null, msg);
		} catch (RegraNegocioException e) { 
			context.addMessage(null,new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.getMessage()));
		} catch (Exception e) { 
			e.printStackTrace();
			FacesMessage msg = new FacesMessage("Erro inesperado ao salvar Pessoa!");
			msg.setSeverity(FacesMessage.SEVERITY_ERROR); 
			context.addMessage(null, msg);
		}
	}
	
	public List<SelectItem> getPessoas() {
		if (this.pessoas == null) {
			this.pessoas = new ArrayList<SelectItem>(); 
			List<Pessoa> pessoas = new PessoaService().listarTodas();
			this.pessoas.add(new SelectItem(null, "Selecione")); 
			for (Pessoa pessoa : pessoas) {
				this.pessoas.add(new SelectItem(pessoa, pessoa.getNome()));
			}
		}
		return this.pessoas;
	}
					
	public Pessoa getPessoaEdicao() {
		return pessoaEdicao;
	}
	
	public void setPessoaEdicao(Pessoa pessoaEdicao) {
		this.pessoaEdicao = pessoaEdicao;
	} 	
	
}

O problema ocorre depois que eu seleciono um registro para alterar, e no ModelPanel que recebe os dados, eu altero o que desejo, mas quando solicito para alterar o registro ele da o erro.

Se alguém tiver uma idéia, estou iniciando em JSF e estou meio perdido.

Grato

Renato

2 Respostas

A

cara,

tira o parametro do seu metodo salvar. (ActionEvent event)

t+

V

Valeu, funcionou.

Obrigado,

Renato

Criado 13 de novembro de 2011
Ultima resposta 13 de nov. de 2011
Respostas 2
Participantes 2