2
Good afternoon Personal,
I have 2 related table, one for orders and one for order items, soon I thought to feed an array with the order item information and on the same screen put order information and when I clicked on the record request button it would save the order and persist the array in the database with the array information. But the array is strange, it creates and appears, but when I create another object inside it, it changes all the objects of the array to the last one created. when I insert another item:
It changes the entire Array.
Follows the code:
XHTML:
<ui:define name="titulo">
Novo Pedido
</ui:define>
<ui:define name="conteudo">
<h:form>
<p:messages id="messages" autoUpdate="true" />
<fieldset style="float: left; margin-right: 20px;margin-bottom: 20px;">
<legend>Dados do Pedido</legend>
<h:panelGrid columns="2">
<h:outputLabel value="Data do Abertura:" for="dataAbertura" />
<p:calendar id="dataAbertura"
value="#{pedidoBean.pedido.dataAbertura.time}"
pattern="dd/MM/yyyy" timeZone="America/Sao_Paulo" />
<h:outputText value="Pedido Entregue: " />
<p:selectBooleanCheckbox value="#{pedidoBean.pedido.pedidoEntregue}" />
<p:outputLabel value="Fornecedor:" for="fornecedor" />
<p:autoComplete id="fornecedor" value="#{pedidoBean.fornecedorId}"
completeMethod="#{pedidoBean.completeText}"
var="fornecedor" itemLabel="#{fornecedor.nome}" itemValue="#{fornecedor}"
converter="fornecedorConverter"
forceSelection="true" >
<p:ajax event="itemSelect" listener="#{pedidoBean.gravarFornecedor}" process="@form"/>
</p:autoComplete>
<h:outputLabel value="Data do Fechamento:" for="dataConcluido" />
<p:calendar id="dataConcluido"
value="#{pedidoBean.pedido.dataConcluido.time}"
pattern="dd/MM/yyyy" timeZone="America/Sao_Paulo" />
</h:panelGrid>
<br/>
<h:panelGrid>
<f:facet name="footer" style="float: right;">
<p:commandButton value="Salvar Pedido" action="#{pedidoBean.gravarPedido}"/>
</f:facet>
</h:panelGrid>
<br/>
</fieldset>
<br/>
<fieldset style="float: left; margin-bottom: 20px; margin-top: -20px;">
<legend>Itens do Pedido</legend>
<h:panelGrid columns="4" style="margin-bottom: 10px;" >
<h:form id="itensPedidos">
<p:outputLabel value="Produto:" for="produto" />
<h:outputLabel value="Quantidade: " for="quantidade" />
<h:outputLabel value="Preço: " for="preco" />
<h:outputLabel value=""/>
<p:autoComplete id="produto" value="#{pedidoBean.produtoId}"
completeMethod="#{pedidoBean.completeTextProduto}"
var="produto" itemLabel="#{produto.nome}" itemValue="#{produto}"
converter="produtoConverter"
forceSelection="true" >
<p:ajax event="itemSelect" listener="#{pedidoBean.gravarProduto}"
process="@form"/>
</p:autoComplete>
<p:inputText id="quantidade" value="#{pedidoBean.itensPedido.quantidade}" />
<p:inputText id="preco" value="#{pedidoBean.itensPedido.valorPedido}" />
</h:form>
<p:commandButton value="Salvar Item" action="#{pedidoBean.gravarItensPedido}"
update="tabela" process="@this itensPedidos"/>
</h:panelGrid>
<p:dataTable value="#{pedidoBean.itensDoPedido}" var="itensPedido"
id="tabela">
<p:column>
<f:facet name="header">Produto</f:facet>
<h:outputText value="#{itensPedido.produto.nome}" />
</p:column>
<p:column>
<f:facet name="header">Quantidade</f:facet>
<h:outputText value="#{itensPedido.quantidade}" />
</p:column>
<p:column>
<f:facet name="header">Valor Pedido</f:facet>
<h:outputText value="#{itensPedido.valorPedido}" />
</p:column>
</p:dataTable>
</fieldset>
<br/>
</h:form>
</ui:define>
</ui:composition>
Pedidobean:
public class PedidoBean {
private Fornecedor fornecedor;
private List<Fornecedor> fornecedores;
private Integer fornecedorId;
private Integer produtoId;
private int number1;
private String txt1;
private Pedido pedido = new Pedido();
private ItensPedido itensPedido = new ItensPedido();
/* Gravar Fornecedor */
public List<Fornecedor> getFornecedores() {
return new DAO<Fornecedor>(Fornecedor.class).listaTodos();
}
public List<Fornecedor> completeText(String query) {
System.out.println("Entrou: ");
this.fornecedores = new DAO<Fornecedor>(Fornecedor.class).listaTodos();
List<Fornecedor> results = new ArrayList<Fornecedor>();
for(Fornecedor p : this.fornecedores) {
if (p.getNome().startsWith(query)) {
results.add(p);
}
}
return results;
}
public void gravarFornecedor() {
Fornecedor fornecedor = new DAO<Fornecedor>(Fornecedor.class).buscaPorId(this.fornecedorId);
this.pedido.adicionaFornecedor(fornecedor);
}
/* Gravar Produto em itensPedido */
private List<Produto> produtos;
public List<Produto> completeTextProduto(String query) {
System.out.println("Entrou: ");
this.produtos = new DAO<Produto>(Produto.class).listaTodos();
List<Produto> results = new ArrayList<Produto>();
for(Produto p : this.produtos) {
if (p.getNome().startsWith(query)) {
results.add(p);
}
}
return results;
}
public void gravarProduto() {
System.out.println("O nome do autor é: "+ produtoId);
Produto produto = new DAO<Produto>(Produto.class).buscaPorId(this.produtoId);
this.itensPedido.adicionaProduto(produto);
System.out.println("O nome do produto é: "+ produto.getNome());
}
/*Getters and Setters */
public Pedido getPedido() {
return pedido;
}
public Integer getFornecedorId() {
return fornecedorId;
}
public void setFornecedorId(Integer fornecedorId) {
this.fornecedorId = fornecedorId;
}
public int getNumber1() {
return number1;
}
public void setNumber1(int number1) {
this.number1 = number1;
}
public String getTxt1() {
return txt1;
}
public void setTxt1(String txt1) {
this.txt1 = txt1;
}
public Fornecedor getFornecedor() {
return fornecedor;
}
public void setFornecedor(Fornecedor fornecedor) {
this.fornecedor = fornecedor;
}
public String getNomeFornecedor (){
return fornecedor.getNome();
}
public Integer getProdutoId() {
return produtoId;
}
public void setProdutoId(Integer produtoId) {
this.produtoId = produtoId;
}
/////Getters Setters
public List<ItensPedido> getItensPedidos() {
return new DAO<ItensPedido>(ItensPedido.class).listaTodos();
}
public List<ItensPedido> getItensDoPedido(){
return this.pedido.getItensPedido();
}
public List<Pedido> getPedidos() {
return new DAO<Pedido>(Pedido.class).listaTodos();
}
public ItensPedido getItensPedido() {
return itensPedido;
}
public void setItensPedido(ItensPedido itensPedido) {
this.itensPedido = itensPedido;
}
/////Metodos
public void gravarItensPedido() {
System.out.println ("Agora vai: " + itensPedido.getValorPedido());
System.out.println ("Agora vai: " + pedido.getItensPedido());
this.pedido.adicionaItensPedido(itensPedido);
}
}
You can post the code of the Itensrequested class?
– dougg0k