Estou desenvolvendo um ecommerce com jsf + hibernate + primefaces + jpa. Estou na parte de adicionar itens a venda e isso faço usando arraylist. Só que quando adiciono um produto ao array é mostrado na tabela o produto adicionado corretamente. Porém quando adiciono mais um produto ao array parece que substitui o objeto anterior do produto. Abaixo está o código da classe controller:
public void preencherItem(){
items.add(itemvenda);
atualizarQuantidade(itemvenda.getProduto().getId(), itemvenda.getQuantidade());
atualizarPrecoVenda("incrementar", itemvenda.getProduto().getPrecovenda(), itemvenda.getQuantidade());
}
O arquivo .xhtml:
<p:dialog id="adicionarItem" width="500" resizable="no" widgetVar="adicionarItemVenda" header="ADICIONAR ITEM À VENDA RÁPIDA" modal="true" height="600">
<h:form id="formAdicionarItemVenda">
<p:messages id="msgs" autoUpdate="true"/>
<h:panelGrid columns="2" cellpadding="4">
<h:outputLabel value="Produto:" for="produto"/>
<p:selectOneMenu value="#{vendaRapidaBean.itemvenda.produto}" converter="bancoConverter" panelStyle="width:150px"
effect="fade" var="p" style="width:160px" filter="true" filterMatchMode="startsWith">
<f:selectItem itemLabel="Selecione" itemValue=""/>
<f:selectItems value="#{produtoBean.produtos}" var="itens" itemValue="#{itens}" itemLabel="#{itens.nome}"/>
<p:column>
#{p.nome}
</p:column>
<p:column>
#{p.precovenda}
</p:column>
<p:column>
#{p.quantidade}
</p:column>
</p:selectOneMenu>
<h:outputLabel value="Quantidade:" for="quantidade"></h:outputLabel>
<h:inputText id="quantidade" value="#{vendaRapidaBean.itemvenda.quantidade}"/>
<h:outputLabel value="Itens da venda:" for="itens"></h:outputLabel>
<p:dataTable id="itemvenda" value="#{vendaRapidaBean.items}" selectionMode="single" rowKey="#{item.produto.id}" var="item" emptyMessage="Nenhum registro incluido." paginator="true" rows="10">
<f:facet name="header">
LISTA DE ITEM DE VENDAS RÁPIDAS
</f:facet>
<p:column headerText="NOME" style="text-align: center">
<h:outputText value="#{item.produto.nome}" />
</p:column>
<p:column headerText="QUANTIDADE" style="text-align: center">
<h:outputText value="#{item.quantidade}" />
</p:column>
<p:column headerText="EXCLUIR" style="text-align: center">
<p:commandButton value="EXCLUIR" title="Excluir" onclick="confirmationItem.show()" ajax="true" style="margin-left: 5px"/>
</p:column>
</p:dataTable>
</h:panelGrid>
<p:commandButton id="btnAdicionar" value="ADICIONAR" actionListener="#{vendaRapidaBean.preencherItem}" update=":formAdicionarItemVenda:itemvenda"/>
<p:commandButton id="btnCancelar" value="FECHAR" oncomplete="adicionarItemVenda.hide()" process="@all" update=":formCadastroVenda"/>
</h:form>
</p:dialog>
<h:form id="dlgItem">
<p:confirmDialog message="Deseja realmente excluir este item da venda?" hideEffect="explode" header="Aviso" severity="alert" widgetVar="confirmationItem">
<p:commandButton id="btnSim" value="Sim" oncomplete="confirmationItem.hide();" actionListener="#{vendaRapidaBean.removerItem}" update=":formAdicionarItemVenda:itemvenda"/>
<p:commandButton id="btnNao" value="Não" onclick="confirmationItem.hide()" type="button"/>
</p:confirmDialog>
</h:form>
O que pode ser?