Olá,
Estou criando um sistema a partir dos conhecimento do curso, mas me deparei com um problema:
Na tela a seguir, tenho um commandbutton (utlima collumn da dataTable) cuja função é remover o item da sua respectiva linha quando clicado e atualizar a tabela, ou seja ao clicar nele toda a linha onde ele está deveria sumir. Porém a tabela não é atualizada. A operação de remoção da entidade acontece, tanto que ao recarregar a pagina, de fato, o elemento excluído não é mais listado.
<ui:composition template="/WEB-INF/templates/LayoutPadrao.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:fn="http://xmlns.jcp.org/jsp/jstl/functions">
<ui:define name="titulo">SGC - Home</ui:define>
<ui:define name="corpo">
<h:form id="formHome">
<p:growl autoUpdate="true" closable="true"/>
<p:dataTable value="#{consultarCursosBean.cursos}" var="curso"
style="width:90%;margin: 50px auto;"
emptyMessage="Nenhum curso cadastrado" id="tabelaCursos">
<f:facet name="header">
Cursos cadastrados no sistema
</f:facet>
<p:column headerText="Titulo">
<p:outputLabel value="#{curso.titulo}" />
</p:column>
<p:column headerText="Area do conhecimento">
<p:outputLabel value="#{curso.areaDoConhecimento}" />
</p:column>
<p:column headerText="Quantidade de inscritos">
<p:outputLabel value="#{fn:length(curso.alunos)}" />
</p:column>
<p:column headerText="Instrutor">
<p:outputLabel value="#{curso.instrutor.nome}" />
</p:column>
<p:column headerText="Sala">
<p:outputLabel value="#{curso.sala}" />
</p:column>
<p:column headerText="Data">
<p:outputLabel value="#{curso.data}">
</p:outputLabel>
</p:column>
<p:column>
<p:commandButton icon="ui-icon-trash" title="Excluir"
process="@this" partialSubmit="true"
update="tabelaCursos"
action="#{cadastroCursoBean.excluir}">
<f:setPropertyActionListener target="#{cadastroCursoBean.curso}"
value="#{curso}" />
</p:commandButton>
</p:column>
<f:facet name="footer">
#{fn:length(consultarCursosBean.cursos)} cadastrados no sistema.
</f:facet>
</p:dataTable>
</h:form>
</ui:define>
</ui:composition>
Me parece estranho que nesta mesma aplicação, tenho a seguinte tela (colei apenas o datatable de interesse, pois o código inteiro da pagina estava sendo truncado aqui. Este dataTable também está dentro de um <h:form> assim como o caso anterior):
<p:dataTable value="#{cadastroCursoBean.curso.alunos}" var="aluno"
emptyMessage="Nenhum aluno inscrito" id="tabelaAlunos">
<p:column headerText="nome" style="text-align:center">
<h:outputText value="#{aluno.nome}" />
</p:column>
<p:column headerText="profissao" style="text-align:center">
<h:outputText value="#{aluno.profissao}" />
</p:column>
<p:column headerText="email" style="text-align:center">
<h:outputText value="#{aluno.email}" />
</p:column>
<p:column headerText="cidade" style="text-align:center">
<h:outputText value="#{aluno.municipio}" />
</p:column>
<p:column headerText="Remover" style="text-align:center">
<p:commandButton icon="ui-icon-trash"
action="#{cadastroCursoBean.removeAluno}" process="@this"
update="tabelaAlunos" partialSubmit="true">
<f:setPropertyActionListener value="#{aluno}"
target="#{cadastroCursoBean.alunoSelecionado}"/>
</p:commandButton>
</p:column>
</p:dataTable>
E esta funciona normalmente com o comportamento que desejo.
Alguém pode me ajudar a entender o que houve para que eu possa resolver isso ?
Obrigado!