Olá amigos,
Estou com um problema que vem me tirando do sério a alguns dias, e não sei o que pode estar ocorrendo.
É o seguinte: Eu possuo um DataTable com vários registros, quando eu clico sobre algum registro do dataTable surge um p : Dialog trazendo as informações do registro.
Quando eu coloco OutputText nesse Dialog, os dados vem setados corretamente em cada OutputText (que no caso faz o papel de visualizar registros).
Se eu trocar os OutputText desse dialog e colocar inputText ( para fazer o papel do alterar) ele não carrega o meu Modelo, fala que o modelo é NULL, consequentemente trazendo os dados em branco.
Mas o que eu não consigo entender é, se o modelo está NULL não era para funcionar nem com outputText.
Segue o código:
Página:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.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:p="http://primefaces.org/ui">
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets" template="./Template.xhtml">
<ui:define name="content">
<f:view contentType="text/html">
<h:head>
<f:facet name="first">
<meta content='text/html; charset=UTF-8' http-equiv="Content-Type"/>
<title>Gerenciar Aluno</title>
</f:facet>
</h:head>
<h:body>
<p:panel header="Gerenciar Alunos">
<h:form id="form">
<h:outputText value="#{aluno.mensagem}" style="color: blue;"/><br/>
<p:commandButton value="Novo" action="/Administrador/CadastroAluno.jsf" icon="ui-icon-star" ajax="false" immediate="true"/>
<p:commandButton value="Editar" icon="ui-icon-arrowrefresh-1-w" ajax="true" update="alteraAlunos" oncomplete="alterarDialog.show()" />
<p:commandButton value="Exibir" icon="ui-icon-extlink" ajax="true" update="listaAlunos" oncomplete="alunoDialog.show()" />
<hr/>
<p:contextMenu for="alunos">
<p:menuitem value="Alterar" update="alteraAlunos"
icon="ui-icon-pencil" oncomplete="alterarDialog.show()" />
<p:menuitem value="Deletar" update="alunos" actionListener="#{aluno.trancarMatricula(aluno.alunoM.matricula)}"
icon="ui-icon-trash" />
</p:contextMenu>
//DATATABLE
<p:dataTable id="alunos" var="item" value="#{aluno.alunoList}" emptyMessage="Nenhum registro encontrado"
paginator="true" rows="10" paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
rowKey="#{item.matricula}" filteredValue="#{aluno.alunoFiltro}" selection="#{aluno.alunoM}" selectionMode="single">
<p:ajax event="rowSelect" actionListener="#{aluno.eventoSelect}" update=":form:listaAlunos" />
<f:facet name="header" />
<p:column headerText="Matricula" sortBy="#{item.matricula}" filterBy="#{item.matricula}" id="matricula">
<h:outputText value="#{item.matricula}"/>
</p:column>
<p:column headerText="Nome" sortBy="#{item.nome}" filterBy="#{item.nome}" id="Nome">
<h:outputText value="#{item.nome}"/>
</p:column>
<p:column headerText="CPF" sortBy="#{item.cpf}" filterBy="#{item.cpf}" id="cpf">
<h:outputText value="#{item.cpf}"/>
</p:column>
</p:dataTable>
//----FIM DATATABLE
<p:dialog header="Visualizar" widgetVar="alunoDialog" resizable="false" id="alunoDialog" width="400" showEffect="fade" hideEffect="explode" modal="true" update="">
<h:panelGrid id="listaAlunos" columns="2" cellpadding="4">
<h:outputText value="Matricula:" />
<h:outputText value="#{aluno.alunoM.matricula}" />
<h:outputText value="Nome:" />
<h:outputText value="#{aluno.alunoM.nome}" />
<h:outputText value="CPF:" />
<h:outputText value="#{aluno.alunoM.cpf}" />
<h:outputText value="Email:" />
<h:outputText value="#{aluno.alunoM.email}"/>
<h:outputText value="Telefone:" />
<h:outputText value="#{aluno.alunoM.telResidencial}"/>
<h:outputText value="Celular:" />
<h:outputText value="#{aluno.alunoM.telCelular}" />
<h:outputText value="Data De Nascimento:" />
<h:outputText value="#{aluno.alunoM.dataNascimento}"/>
<br/>
</h:panelGrid>
</p:dialog>
// DIALOG ALTERAR
<p:dialog header="Alterar" widgetVar="alterarDialog" appendToBody="false" id="alterarDialog" width="400" showEffect="fade" hideEffect="explode" modal="true" update="">
<h:panelGrid id="alteraAlunos" columns="2" cellpadding="4">
<h:outputText value="Matricula:" />
<p:inputText value="#{aluno.alunoM.matricula}" />
<h:outputText value="Nome:" />
<p:inputText value="#{aluno.alunoM.nome}" />
<h:outputText value="CPF:" />
<p:inputText value="#{aluno.alunoM.cpf}" />
<h:outputText value="Email:" />
<p:inputText value="#{aluno.alunoM.email}"/>
<h:outputText value="Telefone:" />
<p:inputText value="#{aluno.alunoM.telResidencial}"/>
<h:outputText value="Celular:" />
<p:inputText value="#{aluno.alunoM.telCelular}" />
<h:outputText value="Data De Nascimento:" />
<p:inputText value="#{aluno.alunoM.dataNascimento}"/>
<p:commandButton value="Salvar" action="#{aluno.alterarAluno}" icon="ui-icon-disk" ajax="false"/>
<br/>
</h:panelGrid>
</p:dialog>
//===FIM
</h:form>
</p:panel>
</h:body>
</f:view>
</ui:define>
</ui:composition>
</html>
ManagedBean:
@ManagedBean(name="aluno")
@RequestScoped
public class AlunoC {
public Integer id;
private String nome="";
private String matricula;
private String cpf="";
private String dataNascimento;
private String telResidencial;
private String telCelular;
private String email="";
private Boolean editarAluno=true;
private AlunoM alunoM;
private AlunoDAO alunoDAO=new AlunoDAOI();
private List<AlunoM>alunoList=new ArrayList<AlunoM>();
private List<AlunoM>alunoFiltro;
private String mensagem="";
public AlunoC()
{
alunoList.addAll(alunoDAO.pesquisarAluno());
}
public void alterarAluno()
{
alunoDAO.alterarAluno(alunoM);
}