Olá pessoal, sou novo aqui no forum e também no ramo da programaçao, estou tendo dificuldades em implementar algumas coisas no meu sistema. Uma delas é conseguir fazer com que os dados do meu DataTable Itens do Deposito ao apertar no botao “+” seja transferido para mu DataTable controle de estoque e o DataTable Itens do deposito fique sem nada e se caso o usuario quiser voltar a ação basta apenas apertar no botao “-”. alguém conhece uma forma de se fazer isso?
Meu managerBean:
package br.com.deposito.bean;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;
import org.omnifaces.util.Messages;
import br.com.deposito.DAO.ControleEstoqueDAO;
import br.com.deposito.DAO.ProdutoDAO;
import br.com.deposito.domain.ControleEstoque;
import br.com.deposito.domain.Produto;
@ManagedBean
@ViewScoped
public class itemDepositoBean {
private Produto produto;
public Produto getProduto() {
return produto;
}
public void setProduto(Produto produto) {
this.produto = produto;
}
private ControleEstoque controleEstoque;
private List<Produto> produtos;
private List<ControleEstoque> controlesEstoque;
public List<ControleEstoque> getControlesEstoque() {
return controlesEstoque;
}
public void setControlesEstoque(List<ControleEstoque> controlesEstoque) {
this.controlesEstoque = controlesEstoque;
}
public List<Produto> getProdutos() {
return produtos;
}
public void setProdutos(List<Produto> produtos) {
this.produtos = produtos;
}
public ControleEstoque getControleEstoque() {
return controleEstoque;
}
public void setControleEstoque(ControleEstoque controleEstoque) {
this.controleEstoque = controleEstoque;
}
@PostConstruct
public void listar() {
try {
ProdutoDAO produtoDAO = new ProdutoDAO();
this.produtos = produtoDAO.listar();
controlesEstoque = new ArrayList<>();
} catch (RuntimeException erro) {
Messages.addGlobalError("Ocorreu um erro ao tentar carregar Itens do deposito");
erro.printStackTrace();
}
}
public void novo() {
try {
controleEstoque = new ControleEstoque();
ProdutoDAO produtoDAO = new ProdutoDAO();
produtos = produtoDAO.listar();
controlesEstoque = new ArrayList<>();
} catch (RuntimeException erro) {
Messages.addGlobalError("Ocorreu um erro ao tentar carregar a tela de controle de estoque");
erro.printStackTrace();
}
}
public void adicionar(ActionEvent evento) {
Produto produto = (Produto) evento.getComponent().getAttributes().get("produtoSelecionado");
ControleEstoque controleEstoque = new ControleEstoque();
controleEstoque.setEstadoItem(produto.getEstadoItem());
controleEstoque.setProduto(produto);
controlesEstoque.add(controleEstoque);
}
public void remover(ActionEvent evento) {
ControleEstoque controleEstoque = (ControleEstoque) evento.getComponent().getAttributes().get("itemSelecionado");
int achou = -1;
for (int posicao = 0; posicao < controlesEstoque.size(); posicao++) {
if (controlesEstoque.get(posicao).getProduto().equals(controleEstoque.getProduto())) {
achou = posicao;
}
}
if (achou > -1) {
controlesEstoque.remove(achou);
}
}
public void acaoProduto() {
try {
ControleEstoqueDAO controleEstoqueDAO = new ControleEstoqueDAO();
produto.getQuantidade();
controleEstoqueDAO.salvar(controleEstoque);
controlesEstoque = controleEstoqueDAO.listar();
Messages.addGlobalInfo("Funcionario salvo com sucesso");
} catch (RuntimeException erro) {
Messages.addGlobalError("Ocorreu um erro ao tentar salvar o funcionario");
erro.printStackTrace();
}
}
}
minha pagina XHTML
<?xml version="1.0" encoding="UTF-8" ?><ui:composition xmlns=“http://www.w3.org/1999/xhtml”
xmlns:h=“http://xmlns.jcp.org/jsf/html”
xmlns:f=“http://xmlns.jcp.org/jsf/core”
xmlns:p=“http://primefaces.org/ui”
xmlns:ui=“http://xmlns.jcp.org/jsf/facelets”
template="/templates/modelo.xhtml">
<ui:define name="conteudo">
<h:form id="formListagem">
<p:panel header="Itens do Deposito">
<!-- rendered="#{itemDepositoBean.controlesEstoque.size() eq 0 }" -->
<p:dataTable id="deposito" emptyMessage="Nenhum registro encontrado."
paginator="true" var="deposito" rows="3" value="#{itemDepositoBean.produtos}"
paginatorPosition="top">
<p:column headerText="codigo" sortBy="#{deposito.codigoIndetificao}">
<h:outputText value="#{deposito.codigoIndetificao}" >
</h:outputText>
</p:column>
<p:column headerText="Produto" filterBy="#{deposito.nome}"
sortBy="#{deposito.nome}">
<h:outputText value="#{deposito.nome}" />
</p:column>
<p:column headerText="Quantidade" sortBy="#{deposito.quantidade}">
<h:outputText value="#{deposito.quantidade}" />
</p:column>
<p:column headerText="Data de Entrada"
filterBy="#{deposito.dataEntrada}"
sortBy="#{deposito.dataEntrada}">
<h:outputText value="#{deposito.dataEntrada}" />
</p:column>
<p:column headerText="Opções">
<p:commandButton icon="ui-icon-plus" actionListener="#{itemDepositoBean.adicionar}"
update=":formListagem:controleEstoque">
<f:attribute name="produtoSelecionado" value="#{deposito}" />
</p:commandButton>
</p:column>
</p:dataTable>
</p:panel>
<!--rendered="#{itemDepositoBean.controlesEstoque.size() >0}" -->
<p:panel id="painelControleEstoque" header="Controle de Estoque" >
<p:dataTable id="controleEstoque" emptyMessage="Nenhum registro encontrado."
paginator="true" value="#{itemDepositoBean.controlesEstoque}" var="deposito"
rows="4" paginatorPosition="top" update=":formListagem">
<p:column headerText="Nome">
<h:outputText value="#{deposito.produto.nome}" />
</p:column>
<p:column headerText="Estado">
<h:outputText value="#{deposito.produto.estadoItem}">
</h:outputText>
</p:column>
<p:column headerText="Disponivel">
<h:outputText value="#{deposito.produto.quantidade}" />
</p:column>
<p:column headerText="Doados">
<h:outputText value="#{deposito.doado}" />
</p:column>
<p:column headerText="Destruídos">
<h:outputText value="#{deposito.destruido}">
</h:outputText>
</p:column>
<p:column headerText=" Incorporados">
<h:outputText value="#{deposito.incorporado}">
</h:outputText>
</p:column>
<p:column headerText=" Leiloados">
<h:outputText value="#{ItemDeposito.leiloado}">
</h:outputText>
</p:column>
<p:column headerText="Opções">
<p:commandButton icon="ui-icon-minus" actionListener="#{itemDepositoBean.remover}"
update=":formListagem:controleEstoque">
<f:attribute name="itemSelecionado" value="#{deposito}"/>
</p:commandButton>
</p:column>
</p:dataTable>
</p:panel>
<p:panel header="Ações">
<h:panelGrid id="painelAcoes" columns="3">
<p:commandButton value="Ação"
update=":mensagem :formAcoes:Acoes" oncomplete="PF('dialogo').show();"/>
</h:panelGrid>
</p:panel>
</h:form>
<p:dialog header="Escolher uma açao" widgetVar="dialogo"
draggable="false" resizable="false" modal="false" closable="false">
<h:form id="formAcoes">
<h:panelGrid id="Acoes" columns="2">
<p:outputLabel for="produto" value="produto:" />
<p:selectOneMenu id="produto" converter="omnifaces.SelectItemsConverter" filter="true"
filterMatchMode="contains" required="true"
requiredMessage="O campo Produto é obrigatório">
<f:selectItem noSelectionOption="true"
itemLabel="Selecione um produto" />
<f:selectItems value="#{itemDepositoBean.produtos}" var="produto"
itemValue="#{produto}" itemLabel="#{produto.nome} - #{produto.quantidade}" />
</p:selectOneMenu>
<p:outputLabel for="doacao" value="Doação:" />
<p:inputText id="doacao" maxlength="20" size="15"
value="#{controleEstoque.doado}"
/>
<p:outputLabel for="destruidos" value="Destuidos:" />
<p:inputText id="destruidos" maxlength="20" size="15"
value="#{controleEstoque.destruido}"/>
<p:outputLabel for="incorporados" value="Incorporados:" />
<p:inputText id="incorporados" maxlength="20" size="15"
value="#{controleEstoque.incorporado}"/>
<p:outputLabel for="leiloados" value="Leiloados:" />
<p:inputText id="leiloados" maxlength="20" size="15"
value="#{controleEstoque.leiloado}"/>
</h:panelGrid>
<h:panelGrid columns="2">
<p:commandButton value="Salvar" actionListener="#{itemDepositoBean.acaoProduto}"
update=" :formListagem:deposito :formListagem:controleEstoque :formListagem:painelAcoes"
oncomplete="PF('dialogo').hide();" />
<p:commandButton value="Fechar" oncomplete="PF('dialogo').hide();" />
</h:panelGrid>
</h:form>
</p:dialog>
</ui:define>
</ui:composition>