Pessoal, estou fazendo um sisteminha pra aprender em JSF. O meu problema é que quando clico no botão de excluir,
aciono um método para remover o objeto do arraylist. Aparentemente não dá nenhum erro, mas simplesmente o objeto não some da datatable.
OBS.: Excluir do banco de dados é de boa, eu na verdade quero remover um objeto de um arraylist para passar pra outro.
Estou bastante desconfiado desse <f:event listener="#{MBPedido.carregarListagem()}" type="preRenderView"/>
pq na minha mente, toda vez (mesmo com ajax) que ele sai do diálogo de exclusão, ele executa o método carregarListagem(). Mas eu não sei outra forma como poderia fazer, se há alguma forma de executar esse método só quando eu clicar em reload no navegador ou algo do tipo. Quem puder ajudar agradeço bastante
xhtml-
`<f:event listener="#{MBPedido.carregarListagem()}" type="preRenderView"/>
<h:form id="frmPedListagem">
<p:dataTable widgetVar="tabelaPedListagem" id="tblPedListagem"
value="#{MBPedido.itens1}" var="itens1" styleClass="fonte hover" emptyMessage="Nenhum registro encontrado."
paginator="true" paginatorPosition="bottom" rows="20" rowsPerPageTemplate="5,10,20,30">
<f:facet name="header">
<p:outputLabel value="Produtos disponíveis"/>
</f:facet>
<p:column headerText="Código" >
<h:outputText value="#{itens1.id}"/>
</p:column>
<p:column headerText="Descrição" >
<h:outputText value="#{itens1.descricao}"/>
</p:column>
<p:column headerText="Preço unitário" >
<h:outputText value="R$ #{itens1.precoUnitario}">
<f:convertNumber pattern="0.00"/>
</h:outputText>
</p:column>
<p:column headerText="Opções">
<p:commandButton icon="ui-icon-trash" oncomplete="PF('dlgProdExcluir').show();" update=":frmProdExcluir:pnlProdExcluir">
<f:setPropertyActionListener target="#{MBProduto.produto}" value="#{itens1}" />
</p:commandButton>
</p:column>
</p:dataTable>
</h:form>`
´<p:dialog widgetVar="dlgProdExcluir" closable="false" resizable="false" modal="true" appendTo="@(body)" header="Produto - Excluir">
<h:form id="frmProdExcluir">
<p:panelGrid id="pnlProdExcluir" columns="2" styleClass="semBorda hover" >
<h:outputLabel value="Código: " />
<h:outputLabel value="#{MBProduto.produto.id}" />
<p:outputLabel value="Descrição: " />
<p:outputLabel value="#{MBProduto.produto.descricao}" />
<p:outputLabel value="Preço unitário: "/>
<p:outputLabel value="#{MBProduto.produto.precoUnitario}" />
</p:panelGrid>
<p:panelGrid columns="2" styleClass="semBorda">
<p:commandButton value="Excluir" action="#{MBPedido.remover()}" oncomplete="PF('dlgProdExcluir').hide(); PF('tabelaProdListagem').clearFilters();"
update=":frmPedListagem:tblPedListagem" />
<p:commandButton value="Cancelar" oncomplete="PF('dlgProdExcluir').hide();" />
</p:panelGrid>
</h:form>
</p:dialog>´
Bean
´@ManagedBean(name="MBPedido")
@ViewScoped
public class PedidoBean {
private Pedido pedido;
private Produto produto = new Produto();
private ArrayList<Produto> itens1;
private ArrayList<Produto> itens2;
public void carregarListagem(){
try {
ProdutoDAO pDAO = new ProdutoDAO();
itens1 =(ArrayList) pDAO.listar();
} catch (Exception e) {
e.printStackTrace();
}
}
public void remover(){
try{
itens1.remove(produto);
}catch(Exception e){
e.printStackTrace();
System.out.println("Erro = "+e);
}
}´
grato