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