Opa bom dia, antigamente usava uma tabela na hora de mostrar meus produtos para fazer a compra, agora apreendi a usar o autoComplete, só que não me traz o nome do produto e nem nada, oque estou errando?
Meu Dao
@SuppressWarnings("unchecked")
public List<Produto> buscarPorNome(String nome) {
Session session = this.manager.unwrap(Session.class);
Criteria criteria = session.createCriteria(Produto.class);
if(!nome.equals("")) {
criteria.add(Restrictions.ilike("nome", nome, MatchMode.START));
}
return criteria.list();
}
meu bean
@Transacional
public List<Produto> completeProduto(String nome) {
return produtoDao.buscarPorNome(nome);
}
public void adicionarProduto(Produto produtoAdicionado) {
compraProduto = new Compra_produto();
compraProduto.setProduto(produtoAdicionado);
compraProdutos.add(compraProduto);
System.out.println("Quantidade de produto: " + this.compraProdutos.size());
}
e o html.
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html 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">
<ui:composition template="/template/template.xhtml">
<ui:define name="conteudo">
<div class="ui-fluid">
<h:form id="formularioTabelaCompra">
<p:dataTable reflow="true">
<f:facet name="header">
<p:commandButton value="Inserir" icon="fa fa-fw fa-plus"
style="width:100px" actionListener="#{compraBean.formularioNovo}"
update=":formularioProduto" oncomplete="PF('inserir').show();" />
</f:facet>
</p:dataTable>
</h:form>
</div>
<p:dialog widgetVar="inserir" modal="true" responsive="true"
appendTo="@(body)" resizable="false" draggable="false"
closable="true" header="Pesquisar produto">
<div class="ui-fluid">
<h:form id="formularioProduto">
<p:panelGrid columns="4"
columnClasses="ui-grid-col-2,ui-grid-col-5,ui-grid-col-3,ui-grid-col-2"
layout="grid" styleClass="ui-panelgrid-blank">
<p:outputLabel value="Produto:" for="produto1" />
<p:autoComplete id="produto1"
value="#{compraBean.compraProduto.produto}"
placeholder="Pesquise pelo produto " required="true"
requiredMessage="O campo[PRODUTO] é obrigatório"
converter="produtoConverter" var="produto" itemValue="#{produto}"
itemLabel="#{produto.nome}"
completeMethod="#{compraBean.completeProduto}">
<p:ajax update=":tabelaProdutos" />
</p:autoComplete>
<p:commandButton value="Adicionar" icon="fa fa-fw fa-plus"
actionListener="#{compraBean.adicionarProduto(produto)}"
update=":formularioQuantidade formularioProduto"
oncomplete="PF('quantidade').show();" immediate="true" />
<p:commandButton icon="fa fa-fw fa-plus" immediate="true"
action="#{compraBean.formularioProduto}" />
</p:panelGrid>
</h:form>
</div>
<h:form id="tabelaProdutos">
<p:dataTable value="#{compraBean.compraProdutos}" var="compra"
reflow="true">
<p:column headerText="Produto">
<h:outputText value="#{compra.produto.nome}" />
</p:column>
<p:column headerText="Quantidade">
<h:outputText value="#{compra.quantidade}" />
</p:column>
<p:column headerText="Fornecedor">
<h:outputText value="#{compra.produto.fornecedor.nome}" />
</p:column>
</p:dataTable>
</h:form>
</p:dialog>
<p:dialog modal="true" header="Quantidade de produto"
widgetVar="quantidade" appendTo="@(body)" closable="true"
resizable="false" draggable="false" responsive="true">
<div class="ui-fluid">
<h:form id="formularioQuantidade">
<p:panelGrid columns="2"
columnClasses="ui-grid-col-5,ui-grid-col-7" layout="grid"
styleClass="ui-panelgrid-blank">
<p:outputLabel value="Quantidade: " for="quantidade" />
<p:inputText id="quantidade"
value="#{compraBean.compraProduto.quantidade}" required="true"
requiredMessage="O campo[QUANTIDADE]é obrigatório" />
</p:panelGrid>
<p:panelGrid columns="2"
columnClasses="ui-grid-col-6,ui-grid-col-6" layout="grid"
styleClass="ui-panelgrid-blank">
<p:commandButton value="Ok" icon="fa fa-fw fa-check"
update=":tabelaProdutos" onclick="PF('quantidade').hide();" />
<p:commandButton value="Cancelar" icon="fa fa-fw fa-thumbs-down"
immediate="true" onclick="PF('quantidade').hide();" />
</p:panelGrid>
</h:form>
</div>
</p:dialog>
</ui:define>
</ui:composition>
</html>
Oque eu quero fazer? quero que na hora de escolher os produtos, com o autocomplete ele busca o produto e coloca o produto em uma tabela, para ficar mostrando qual produto que estou adicionando, mais do jeito que tá, só mostra a quantidade de produto, não mostra nome, não mostra fornecedor... Lembrando que ele está fazendo o auto complete correto está mostrando os meus produtos, e quando clico nesse produto abre um dialog para quantidade desse produto, ai quando do ok, ele me renderiza apenas essa quantidade que acabei de passar, o nome do produto fica em branco na tabela de item :(