galera bom dia, tô pagando pau pra descobriu o q é que ta acontecendo, tô usando a mesma lógica pra inserir um registro no banco de dados e pra remover, retornarnando uma mensagem após a inserção ou remoção do referido registro.
Pra inserir ta tranquilo, insere e me retorna a mensagem informando se foi ou não inserindo com sucesso.
Pra remover, localiza e remove o registro sem problema, porém não ta me retornando o modalPanel informado se foi ou não inserido com sucesso. segue abaixo o código para excluir o registro.
Estou usando JSF com hibernate e JPA.
excluiPaciente.jsf
[code]
<h:form>
<h:panelGrid columns=“3” style=" height:28px;" >
<h:outputText value=“NOME:” />
<h:inputText value="#{pacienteBean.paciente.nome}" onkeydown=“this.value = this.value.toUpperCase();“
onkeyup=“this.value = this.value.toUpperCase()” size=“60” style=” height:16px;”/>
<h:commandButton action="#{pacienteBean.procuraNome}" value=“Pesquisa” style=" height:23px;"/>
</h:panelGrid>
</h:form>
<h:form>
<rich:spacer height="8" />
<rich:scrollableDataTable rowKeyVar="rkv" frozenColCount="1" height="100px" rendered="#{!empty pacienteBean.lista }"
width="553px" rows="20" columnClasses="col" id="tab" binding="#{pacienteBean.objPaciente}"
value="#{pacienteBean.lista }" var="p" >
<h:column style="width:30px" >
<f:facet name="header" >
<h:outputText value="Id" />
</f:facet>
<h:outputText value="#{p.id}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Nome" />
</f:facet>
<h:outputText value="#{p.nome}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Endereco" />
</f:facet>
<h:outputText value="#{p.endereco }" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Nome da Mae" />
</f:facet>
<h:outputText style="" value="#{p.nomeMae }" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Data Nascimento" />
</f:facet>
<h:outputText value="#{p.dataNasc }" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Excluir" />
</f:facet>
<a4j:commandButton action="#{pacienteBean.excluir}" image="imagens/delete.gif" oncomplete="#{pacienteBean.acao}" reRender="tab"/>
</h:column>
</rich:scrollableDataTable>
<rich:spacer height="8px"/>
</h:form>
<rich:modalPanel id="rmp" width="250" height="100" autosized="true" moveable="false" >
<f:facet name="header">
<a onclick="Richfaces.hideModalPanel('rmp');">fechar</a>
</f:facet>
<h:outputText value="Registro exluido com sucesso!" />
</rich:modalPanel>
<rich:modalPanel id="erromp" width="250" height="100" autosized="true" moveable="false" >
<f:facet name="header">
<a onclick="Richfaces.hideModalPanel('erromp');">fechar</a>
</f:facet>
<h:outputText value="Erro ao excluir registro!" />
</rich:modalPanel>
[/code]
Minha classe pacienteBean
public String excluir(){
DAO d=new DAO();
EntityManager em=d.getEntityManager();
//Pega o objeto selecionado no DataTable
paciente = (Paciente) objPaciente.getRowData();
int codigo=paciente.getId();
try {
em.getTransaction().begin();
paciente=em.find(Paciente.class,codigo);
em.remove(paciente);
em.getTransaction().commit();
//limpa o objeto aluno para novas insercoes...
paciente = new Paciente();
this.setAcao("Richfaces.showModalPanel('rmp')");
} catch (Exception e) {
//se ocorrer algo errado cancela a transacao
this.setAcao("Richfaces.showModalPanel('erromp')");
em.getTransaction().rollback();
}finally{
//fecha a sessao com o banco de dados.
em.close();
}
return null;
}
private String acao;
public void setAcao(String acao) {
this.acao = acao;
}
public String getAcao() {
return acao;
}