Good afternoon, I'm trying to insert a product automatically after reading the code and update the components in the managedBean . However, the autocomplete component disappears from the screen after I do the context.update (panelGroup)
Note: The solution works, however I would like to clean the autocomplete after inserting the product.
Could anyone help me figure out what's going on, please?
public List<Produto> produtosSugeridos(String query) {
lisProdutosSugeridos = produtoServico.listarTodos();
List<Produto> produtosFiltrado = new ArrayList<Produto>();
for (Produto p : lisProdutosSugeridos) {
if (Pattern.compile(Pattern.quote(query), Pattern.CASE_INSENSITIVE).matcher(p.getNome()).find()
|| Pattern.compile(Pattern.quote(query), Pattern.CASE_INSENSITIVE).matcher(p.getCodigoDeBarras()).find()) {
produtosFiltrado.add(p);
}
}
if(produtosFiltrado.size() == 1 && query.length() == 13 && query.matches("[0-9]*")){
RequestContext context = RequestContext.getCurrentInstance();
for (Produto p : produtosFiltrado) {
produtoDaVenda.setProduto(p);
adicionaProdutosNaVenda();
produtoDaVenda.setQuantidade(1.0);
produtosFiltrado = new ArrayList<Produto>();
context.update("panelProdutos");
context.update("panel");
//Atualizo o autocomplet
context.update("panelInputProdu");
}
}
return produtosFiltrado;
}
Here code in the .xhtml page
<h:panelGroup id="panelInputProdu">
<h:panelGrid
<p:autoComplete
tabindex="8"
id="autoProduto"
value="#{vendaControlador.produtoDaVenda.produto}"
completeMethod="#{vendaControlador.produtosSugeridos}"
var="p" itemLabel="#{p.nome}"
converter="produtoConverter"
temValue="#{p}"
minQueryLength="2" maxResults="20"
update="autoProduto,:formVenda:precoVenda">'
<p:ajax event="itemSelect" update="autoProduto,:formVenda:precoVenda" />
</p:autoComplete>
<p:watermark for="autoProduto" value="Digite o produto" />
</h:column>