Duvida JSF + Richfaces [RESOLVIDO]

Estou estudando Richfaces e estou com alguns problemas, estou tentando fazer um simples CRUD, tenho um banco MySQL e estou usando Hibernate. Eu já consigo lista o conteúdo da tabela Empresa em uma dataTable, ai coloquei dois links nas linhas, um para excluir o registro e outro para alterar, a exclusão também está funcionando sem problemas, mas para a edição não está funcionando.

Quando eu clico em editar ele abre o conteúdo do registro em um popupPanel com um a4j:commandButton para salvar, o problema que ele não salva. Segue abaixo o meu codigo.

dataTable

<rich:dataTable value="#{empresaController.todasEmpresas}" var="empresa" iterationStatusVar="it" id="table" rows="15" rowClasses="odd-row, even-row" styleClass="stable"> <h:inputHidden value="#{empresa.idEmpresa}" /> <rich:column> <f:facet name="header">#</f:facet> #{it.index+1} </rich:column> <rich:column> <f:facet name="header">Razão Social</f:facet> <h:outputText value="#{empresa.razaoSocial}" /> </rich:column> <rich:column> <f:facet name="header">Fantasia</f:facet> <h:outputText value="#{empresa.fantasia}" /> </rich:column> <rich:column> <f:facet name="header">CGC</f:facet> <h:outputText value="#{empresa.cgc}" /> </rich:column> <rich:column> <f:facet name="header">Status</f:facet> <h:outputText value="#{empresa.status}" /> </rich:column> <rich:column> <f:facet name="header">Tipo de Empresa</f:facet> <h:outputText value="#{empresa.tipoEmpresa}" /> </rich:column> <rich:column> <f:facet name="header">Ações</f:facet> <a4j:commandLink styleClass="no-decor" execute="@this" render="@none" oncomplete="#{rich:component('confirmPane')}.show()"> <h:graphicImage value="/images/icons/delete.gif" alt="delete" /> <a4j:param value="#{empresa.idEmpresa}" assignTo="#{empresaController.currentEmpresaIndex}" /> </a4j:commandLink> <a4j:commandLink styleClass="no-decor" render="editGrid" execute="@this" oncomplete="#{rich:component('editPane')}.show()"> <h:graphicImage value="/images/icons/edit.gif" alt="edit" /> <a4j:param value="#{empresa.idEmpresa}" assignTo="#{empresaController.currentEmpresaIndex}" /> <f:setPropertyActionListener target="#{empresaController.empresaSelecionada}" value="#{empresa}" /> </a4j:commandLink> </rich:column> <f:facet name="footer"> <rich:dataScroller page="#{empresaController.page}" /> </f:facet> </rich:dataTable>

popupPanel

<rich:popupPanel header="Alterar Empresa" id="editPane" autosized="true" width="400" height="200"> <h:panelGrid columns="3" id="editGrid"> <h:inputHidden value="#{empresaController.empresaSelecionada.idEmpresa}" /> <h:outputText value="Razao Social" style="font-size: 11px; font-weight: bold" /> <h:inputText value="#{empresaController.empresaSelecionada.razaoSocial}" required="true" requiredMessage="Campo Obrigatorio" label="Deve ser informado a Razão Social da Empresa"/> <h:panelGroup /> <h:outputText value="Fantasia" style="font-size: 11px; font-weight: bold" /> <h:inputText value="#{empresaController.empresaSelecionada.fantasia}" required="true" requiredMessage="Campo Obrigatorio" label="Deve ser informado o nome fantasia da Empresa"/> <h:panelGroup /> <h:outputText value="CGC" style="font-size: 11px; font-weight: bold" /> <h:inputText value="#{empresaController.empresaSelecionada.cgc}" required="true" requiredMessage="Campo Obrigatorio" label="Deve ser informado o CGC da Empresa" /> <rich:message id="priceMsg" for="price" /> <h:outputText value="Status" style="font-size: 11px; font-weight: bold" /> <h:selectOneListbox value="#{empresaController.empresaSelecionada.status}" size="1"> <f:selectItems value="#{empresaController.listaStatus}" /> </h:selectOneListbox> <h:panelGroup /> <h:outputText value="Tipo de Empresa" style="font-size: 11px; font-weight: bold" /> <h:selectOneListbox value="#{empresaController.empresaSelecionada.tipoEmpresa}" size="1"> <f:selectItems value="#{empresaController.tiposEmpresa}" /> </h:selectOneListbox> </h:panelGrid> <h:panelGroup /> <a4j:commandButton value="Salvar" action="#{empresaController.alterar}" render="table" execute="editPane" oncomplete="if (#{facesContext.maximumSeverity==null}) {#{rich:component('editPane')}.hide();}" /> <a4j:commandButton value="Cancelar" onclick="#{rich:component('editPane')}.hide(); return false;" /> </rich:popupPanel>

ManagedBean

[code]
@Named(value = “empresaController”)
@ManagedBean
@SessionScoped
public class EmpresaController implements Serializable {

/**
 * Creates a new instance of EmpresaController
 */
private static final int CLIENT_ROWS_IN_AJAX_MODE = 15;
private Empresa e;
private Empresa empresaSelecionada;
private DaoEmpresa dao;
private DataModel listaEmpresa;
private List<Empresa> todasEmpresas;
private List<SelectItem> tiposEmpresa;
private List<SelectItem> listaStatus;
private int page = 1;
private int currentEmpresaIndex;
private int clientRows;

..............................

public List<Empresa> getTodasEmpresas() {
    dao = new DaoEmpresa();
    todasEmpresas = dao.listarTodos();
    System.out.println("Listando empresas ...............................................................................");
    return todasEmpresas;
}

public void remove() {
    dao = new DaoEmpresa();
    dao.deletar(currentEmpresaIndex);
}

public void salvar() {
    dao = new DaoEmpresa();
    dao.salvar(e);
}

public void alterar() {
    System.out.println("Alterando .........................................................................................");
    dao = new DaoEmpresa();
    dao.alterar(empresaSelecionada);
}

//gets e sets

}[/code]

Eu coloquei ate uns prints nos métodos e a impressão é que ele nem chega a entrar no método alterar.

Alguém pode me dar uma ajuda?

Só pra eu entender corretamente, a popup de edição abre normalmente, mas quando você clica no botão de alterar o seu método do bean não é invocado, correto ?

Alguma exceção é lançada no console do seu servidor ?

É exatamente isso, a tela de edição carrega normalmente, mas quando salvo o metodo de alterar não é invocado. Nenhuma exceção.

seu popup está dentro de um <h:form> ?

Sim

Um teste que eu costumo fazer nesses casos é remover o ajax pra ver se o problema está em outro lugar, subsituo meu a4j:commandButton por um <h:commandButton> e vou encontrando o erro por eliminação.

Eu tirei o ajax e o resultado foi o mesmo, tem mais alguma dica?

Pessoal bom dia,
Estou com este mesmo problema, gostaria de saber se vocês conseguiram resolver, isso já esta me deixando doido estou a 2 dias parado !!

Desde já agradeço a ajuda de vocês e a atenção.

Eu resolvi sim o problema, na verdade eu voltei a usar o ajax e no popupPanel eu não tinha colocado o atributo domElementAttachment=“parent”. ai funcionou sem problemas.
Veja como ficou:

<rich:popupPanel header="Nova Empresa" id="savePane" domElementAttachment="parent" width="400" height="200">
                    <h:panelGrid columns="3" id="saveGrid">                        
                        <h:outputText value="Razao Social" style="font-size: 11px; font-weight: bold" />
                        <h:inputText value="#{empresaController.e.razaoSocial}" required="true" requiredMessage="Campo Obrigatorio" label="Deve ser informado a Razão Social da Empresa"/>
                        <h:panelGroup />
                        <h:outputText value="Fantasia" style="font-size: 11px; font-weight: bold" />
                        <h:inputText value="#{empresaController.e.fantasia}" required="true" requiredMessage="Campo Obrigatorio" label="Deve ser informado o nome fantasia da Empresa"/>
                        <h:panelGroup />
                        <h:outputText value="CGC" style="font-size: 11px; font-weight: bold" />
                        <h:inputText value="#{empresaController.e.cgc}" required="true" requiredMessage="Campo Obrigatorio" label="Deve ser informado o CGC da Empresa" />                                                                        
                        <rich:message id="priceMsg2" for="price" />
                        <h:outputText value="Status" style="font-size: 11px; font-weight: bold" />
                        <h:selectOneListbox value="#{empresaController.e.status}" size="1">
                            <f:selectItems value="#{empresaController.listaStatus}" />                            
                        </h:selectOneListbox>                                                    
                        <h:panelGroup />
                        <h:outputText value="Tipo de Empresa" style="font-size: 11px; font-weight: bold" />
                        <h:selectOneListbox value="#{empresaController.e.tipoEmpresa}" size="1">                            
                            <f:selectItems value="#{empresaController.tiposEmpresa}" />                            
                        </h:selectOneListbox>                                                                                                                                                   
                    </h:panelGrid>

Wagner,

Com isso no click do botão ele realiza a gravação no banco??? você alterou mais alguma coisa???

vou tentar por aqui, Cara desde já agradeço a atenção…

Gustavo, eu não tinha copiado o fim do popupPanel, mas é isso mesmo, não alterei mais nada.
Segue popupPanel completo

<rich:popupPanel header="Nova Empresa" id="savePane" domElementAttachment="parent" width="400" height="200"> <h:panelGrid columns="3" id="saveGrid"> <h:outputText value="Razao Social" style="font-size: 11px; font-weight: bold" /> <h:inputText value="#{empresaController.e.razaoSocial}" required="true" requiredMessage="Campo Obrigatorio" label="Deve ser informado a Razão Social da Empresa"/> <h:panelGroup /> <h:outputText value="Fantasia" style="font-size: 11px; font-weight: bold" /> <h:inputText value="#{empresaController.e.fantasia}" required="true" requiredMessage="Campo Obrigatorio" label="Deve ser informado o nome fantasia da Empresa"/> <h:panelGroup /> <h:outputText value="CGC" style="font-size: 11px; font-weight: bold" /> <h:inputText value="#{empresaController.e.cgc}" required="true" requiredMessage="Campo Obrigatorio" label="Deve ser informado o CGC da Empresa" /> <rich:message id="priceMsg2" for="price" /> <h:outputText value="Status" style="font-size: 11px; font-weight: bold" /> <h:selectOneListbox value="#{empresaController.e.status}" size="1"> <f:selectItems value="#{empresaController.listaStatus}" /> </h:selectOneListbox> <h:panelGroup /> <h:outputText value="Tipo de Empresa" style="font-size: 11px; font-weight: bold" /> <h:selectOneListbox value="#{empresaController.e.tipoEmpresa}" size="1"> <f:selectItems value="#{empresaController.tiposEmpresa}" /> </h:selectOneListbox> </h:panelGrid> <h:panelGroup /> <a4j:commandButton value="Salvar" action="#{empresaController.salvar()}" render="table" execute="savePane" oncomplete="if (#{facesContext.maximumSeverity==null}) {#{rich:component('savePane')}.hide();}" /> <a4j:commandButton value="Cancelar" onclick="#{rich:component('savePane')}.hide(); return false;" /> </rich:popupPanel>

Wagner, veja o meu:

<a4j:commandButton value="Salvar"
     actionListener="#{cadastroAlunoBean.salvar}"
     reRender="frm" type="submit"/>
<h:commandButton value="Cancelar" action="menu"
immediate="true"/>

Será que posso deixar igual ao seu??

e no form

adicionar o "domElementAttachment=“parent”

???

Wagner bom dia,

Cara a sua solução não deu pra resolver meu problema eu acho que na forma que estou usando este parâmetro não serve para o componente , teria um outro parâmetro que faria o mesmo efeito para o que estou usando, abaixo segue o JSP. o nome do botão é “Salvar” logo no final do código.


<%-- 
    Document   : cadastroAluno
    Created on : 23/04/2012, 22:40:47
    Author     : Gustavo
--%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>

<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>



<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">



<html>
<head>
<title>Cadastro de Aluno</title>
<link rel="stylesheet" type="text/css" href="../css/estilo.css">
</head>
<f:view>
	<body>
		<h:form id="frm" styleClass="formulario">

			<h1>
				<h:outputText value="Cadastro de alunos" />
			</h1>

			<h:messages layout="table" showSummary="true" showDetail="false"
				globalOnly="true" styleClass="msgErro" infoClass="msgInfo"
				style="font-weight: bold" />

			<rich:tabPanel width="100%" >
				<rich:tab label="Dados Gerais" switchType="client" rendered="true">
					<h:panelGrid style="text-align: left" columns="2">
						<h:panelGroup style="text-align: left">
							<h:outputLabel value="Código: " />
							<h:inputText id="codigo" size="10"
								value="#{CadastroAlunoBean.alunoEdicao.cd_aluno}"
								label="Código do aluno" disabled="true" />
							<h:message for="codigo" showSummary="true" showDetail="false"
								styleClass="msgErro" />
							<br>
							<br>
							<h:outputLabel value="Nome: " />
							<h:inputText id="nomeAluno" size="80" maxlength="150"
								value="#{CadastroAlunoBean.alunoEdicao.nome}" required="true"
								label="Nome do Aluno" />
							<h:message for="nomeAluno" showSummary="true" showDetail="false"
								styleClass="msgErro" />
							<br>
							<br>
							<h:outputLabel value=" Data Nascimento: " />
							<rich:calendar id="dtNascimento" inputSize="12"
								datePattern="dd/MM/yyyy" enableManualInput="true"
								value="#{CadastroAlunoBean.alunoEdicao.dt_nascimento}"
								required="true" label="Data nascimento" />
							<h:message for="dtNascimento" showSummary="true"
								showDetail="false" styleClass="msgErro" />
							<br>
							<br>
							<h:outputLabel value="CPF/CNPJ: " />
							<h:inputText id="cnpjcpf" size="14" maxlength="14"
								value="#{CadastroAlunoBean.alunoEdicao.cnpj_cpf}"
								required="true" label="CPF/CNPJ">
							</h:inputText>
							<h:message for="cnpjcpf" showSummary="true" showDetail="false"
								styleClass="msgErro" />
							<br>
							<br>
							<h:outputLabel value="RG : " />
							<h:inputText id="rg" size="14" maxlength="14"
								value="#{CadastroAlunoBean.alunoEdicao.rg}" required="true"
								label="RG">
							</h:inputText>
							<h:message for="rg" showSummary="true" showDetail="false"
								styleClass="msgErro" />
							<br>
							<br>

							<h:outputLabel value="Orgão Emissor : " />
							<h:inputText id="OrgEmiss" size="14" maxlength="14"
								value="#{CadastroAlunoBean.alunoEdicao.rg_orgao}"
								required="true" label="Orgão Emissor">
							</h:inputText>
							<h:message for="OrgEmiss" showSummary="true" showDetail="false"
								styleClass="msgErro" />
							<br>
							<br>
							<h:outputLabel value="Nome do Pai : " />
							<h:inputText id="NomPai" size="80" maxlength="80"
								value="#{CadastroAlunoBean.alunoEdicao.filiacao_pai}"
								required="true" label="Nome do Pai">
							</h:inputText>
							<h:message for="NomPai" showSummary="true" showDetail="false"
								styleClass="msgErro" />
							<br>
							<br>
							<h:outputLabel value="Estado Civil : " />
							<h:selectOneMenu id="EstCivil"
								value="#{CadastroAlunoBean.alunoEdicao.estado_civil}"
								label="EstCivil" required="true">
								<f:selectItems value="#{CadastroAlunoBean.estados_civil}"
									var="e" itemLabel="#{e.descricao}" itemValue="#{e.codigo}" />
							</h:selectOneMenu>
							<h:message for="EstCivil" showSummary="true" showDetail="false"
								styleClass="msgErro" />
							<br>
							<br>
							<h:outputLabel value="Nome da Mãe : " />
							<h:inputText id="NomMae" size="80" maxlength="80"
								value="#{CadastroAlunoBean.alunoEdicao.filiacao_mae}"
								required="true" label="Nome da Mãe">
							</h:inputText>
							<h:message for="NomMae" showSummary="true" showDetail="false"
								styleClass="msgErro" />
							<br>
							<br>
							<h:outputLabel value="Status do aluno : " />
							<h:selectOneMenu id="StatusAlu"
								value="#{CadastroAlunoBean.alunoEdicao.cd_status }"
								label="StatusAlu" required="true">
								<f:selectItems value="#{CadastroAlunoBean.status_aluno}" var="s"
									itemLabel="#{s.descricao}" itemValue="#{s.cd_status}" />
							</h:selectOneMenu>
							<h:message for="StatusAlu" showSummary="true" showDetail="false"
								styleClass="msgErro" />
							<br>
							<br>
							<h:outputLabel value="Naturalidade : " />
							<h:inputText id="natural" size="14" maxlength="14"
								value="#{CadastroAlunoBean.alunoEdicao.naturalidade}"
								required="true" label="Naturalidade">
							</h:inputText>
							<br>
							<br>
							<h:outputLabel value="Nacionalidade : " />
							<h:inputText id="nacional" size="14" maxlength="14"
								value="#{CadastroAlunoBean.alunoEdicao.nacionalidade}"
								required="true" label="Nacionalidade">
							</h:inputText>
						</h:panelGroup>
					</h:panelGrid>
				</rich:tab>
				<rich:tab label="Endereço" switchType="client">
					<h:panelGrid style="text-align: left" columns="2">
						<h:panelGroup style="text-align: left">
							<h:outputLabel value="CEP : " />
							<h:inputText id="cep" size="14" maxlength="10"
								value="#{CadastroAlunoBean.alunoEdicao.cep}" required="true"
								label="Nacionalidade"
								validatorMessage="O valor informado não obedece ao padrão definido">
								<f:validateRegex pattern="(^[0-9]{2}\.?[0-9]{3}-{1}[0-9]{3})" />
							</h:inputText>
							<br>
							<br>
							<h:outputLabel value="Endereço : " />
							<h:inputText id="endereco" size="80" maxlength="200"
								value="#{CadastroAlunoBean.alunoEdicao.endereco}"
								required="true" label="Endereço">
							</h:inputText>
							<br>
							<br>
							<h:outputLabel value="Bairro : " />
							<h:inputText id="bairro" size="50" maxlength="60"
								value="#{CadastroAlunoBean.alunoEdicao.bairro}" required="true"
								label="Bairro">
							</h:inputText>
							<br>
							<br>
							<h:outputLabel value="Complemento : " />
							<h:inputText id="complemento" size="80" maxlength="200"
								value="#{CadastroAlunoBean.alunoEdicao.complemento}"
								required="true" label="Complemento">
							</h:inputText>
							<br>
							<br>
							<h:outputLabel value="Cidade : " />
							<h:inputText id="cidade" size="50" maxlength="60"
								value="#{CadastroAlunoBean.alunoEdicao.cidade}" required="true"
								label="Cidade">
							</h:inputText>
							<br>
							<br>
							<h:outputLabel value="Estado : " />
							<h:selectOneMenu id="Estado"
								value="#{CadastroAlunoBean.alunoEdicao.estado }"
								label="EstCivil" required="true">
								<f:selectItems value="#{CadastroAlunoBean.estado}" />
							</h:selectOneMenu>
							<h:message for="Estado" showSummary="true" showDetail="false"
								styleClass="msgErro" />
						</h:panelGroup>
					</h:panelGrid>
				</rich:tab>
				<rich:tab label="Endereço de Cobrança" switchType="client">
					<h:panelGrid style="text-align: left" columns="2">
						<h:panelGroup style="text-align: left">
							<h:outputLabel value="CEP : " />
							<h:inputText id="cep_cob" size="14" maxlength="14"
								value="#{CadastroAlunoBean.alunoEdicao.cob_cep }"
								required="true" label="CEP"
								validatorMessage="O valor informado não obedece ao padrão definido">
								<f:validateRegex pattern="(^[0-9]{2}\.?[0-9]{3}-{1}[0-9]{3})" />
							</h:inputText>
							<br>
							<br>
							<h:outputLabel value="Endereço : " />
							<h:inputText id="endereco_cob" size="80" maxlength="200"
								value="#{CadastroAlunoBean.alunoEdicao.cob_endereco}"
								required="true" label="Endereço">
							</h:inputText>
							<br>
							<br>
							<h:outputLabel value="Bairro : " />
							<h:inputText id="bairro_cob" size="50" maxlength="60"
								value="#{CadastroAlunoBean.alunoEdicao.cob_bairro}"
								required="true" label="Bairro">
							</h:inputText>
							<br>
							<br>
							<h:outputLabel value="Complemento : " />
							<h:inputText id="complemento_cob" size="80" maxlength="200"
								value="#{CadastroAlunoBean.alunoEdicao.cob_complemento}"
								required="true" label="Complemento">
							</h:inputText>
							<br>
							<br>
							<h:outputLabel value="Cidade : " />
							<h:inputText id="cidade_cob" size="50" maxlength="60"
								value="#{CadastroAlunoBean.alunoEdicao.cob_cidade}"
								required="true" label="Cidade">
							</h:inputText>
							<br>
							<br>
							<h:outputLabel value="Estado : " />
							<h:selectOneMenu id="Estado_cob"
								value="#{CadastroAlunoBean.alunoEdicao.cob_estado }"
								label="EstCivil" required="true">
								<f:selectItems value="#{CadastroAlunoBean.estado}" />
							</h:selectOneMenu>
							<h:message for="Estado" showSummary="true" showDetail="false"
								styleClass="msgErro" />
						</h:panelGroup>
					</h:panelGrid>
				</rich:tab>
				<rich:tab label="Contatos" switchType="client">
					<h:panelGrid style="text-align: left" columns="2">
						<h:panelGroup style="text-align: left">
							<h:outputLabel value="Telefone : " />
							<h:inputText id="telefone" size="14" maxlength="14"
								value="#{CadastroAlunoBean.alunoEdicao.telefone1}"
								required="true" label="Telefone">
							</h:inputText>
							<br>
							<br>
							<h:outputLabel value="Site : " />
							<h:inputText id="site" size="80" maxlength="100"
								value="#{CadastroAlunoBean.alunoEdicao.site}" required="true"
								label="Site">
							</h:inputText>
							<br>
							<br>

							<h:outputLabel value="Telefone : " />
							<h:inputText id="telefone2" size="14" maxlength="14"
								value="#{CadastroAlunoBean.alunoEdicao.telefone2}"
								required="true" label="Telefone">
							</h:inputText>
							<br>
							<br>

							<h:outputLabel value="Email : " />
							<h:inputText id="email" size="80" maxlength="100"
								value="#{CadastroAlunoBean.alunoEdicao.email}" required="true"
								label="Email">
							</h:inputText>
							<br>
							<br>

							<h:outputLabel value="Telefone : " />
							<h:inputText id="telefone3" size="14" maxlength="14"
								value="#{CadastroAlunoBean.alunoEdicao.telefone3}"
								required="true" label="Telefone">
							</h:inputText>

						</h:panelGroup>
					</h:panelGrid>
				</rich:tab>
				<rich:tab label="Cursos" switchType="client">
					<h:panelGrid style="text-align: left" columns="2">
						<h:panelGroup style="text-align: left">
							<h:outputLabel value="Data Desistência : " />
							<rich:calendar id="dtDesistencia" inputSize="12"
								datePattern="dd/MM/yyyy" enableManualInput="true"
								value="#{CadastroAlunoBean.alunoEdicao.dt_desistencia}"
								required="false" label="Data Desistência" />
							<h:message for="dtDesistencia" showSummary="true"
								showDetail="false" styleClass="msgErro" />
							<br>
							<br>
							<h:outputLabel value="Data Trancamento : " />
							<rich:calendar id="dtTrancamento" inputSize="12"
								datePattern="dd/MM/yyyy" enableManualInput="true"
								value="#{CadastroAlunoBean.alunoEdicao.dt_trancamento}"
								required="false" label="Data Trancamento" />
							<h:message for="dtTrancamento" showSummary="true"
								showDetail="false" styleClass="msgErro" />
							<br>
							<br>
							<h:outputLabel value="Data Conclusão Curso : " />
							<rich:calendar id="dtConclusaoCurso" inputSize="12"
								datePattern="dd/MM/yyyy" enableManualInput="true"
								value="#{CadastroAlunoBean.alunoEdicao.dt_conclusao_curso}"
								required="false" label="Data Conclusão Curso" />
							<h:message for="dtConclusaoCurso" showSummary="true"
								showDetail="false" styleClass="msgErro" />

						</h:panelGroup>
					</h:panelGrid>
				</rich:tab>
				<rich:tab label="Documentos" switchType="client">
					<h:panelGrid style="text-align: left-top" columns="4">

						<h:outputLabel value="Documento  : " />
						<h:selectOneMenu id="documento"
							value="#{CadastroAlunoBean.alunoEdicao.documentos }"
							label="documento" required="false">
							<f:selectItems value="#{CadastroAlunoBean.lsttipo_documento}" />
						</h:selectOneMenu>
						<br>
						<br>
						<rich:dataTable rows="10" id="tab"
							value="#{CadastroAlunoBean.alunoEdicao.documentos}" var="item"
							width="400px">
							<rich:column style="text-aling: center">
								<f:facet name="header">
									<h:outputText value="Documentos" />
								</f:facet>
								<h:outputText value="#{item.nome}" />
							</rich:column>
						</rich:dataTable>

					</h:panelGrid>
				</rich:tab>
				<rich:tab label="Observação" switchType="client">
					<h:panelGrid style="text-align: left-top" columns="2">
						<h:outputLabel value="Observação : " />
						<h:panelGroup style="text-align: left-top">
							<h:inputTextarea id="observacao"
								value="#{CadastroAlunoBean.alunoEdicao.observacao}"
								required="true" label="Observação" rows="10" cols="60">
							</h:inputTextarea>

						</h:panelGroup>
					</h:panelGrid>
				</rich:tab>

			</rich:tabPanel>

			<!------ Botões ----->

			<h:panelGroup>
				<a4j:commandButton value="Salvar"
					actionListener="#{CadastroAlunoBean.salvar}" reRender="frm"
					type="submit" />
				<a4j:commandButton value="Cancelar" action="menu" immediate="true" />
			</h:panelGroup>


		</h:form>
	</body>
</f:view>
</html>

Desde já agradeço a ajuda e a atenção.

Gustavo