Boa noite, estou tentando inserir um produto automaticamente após ler o código e faço a atualização dos componentes no managedBean. No Entanto, o componente autocomplete desaparece da tela depois que faço o context.update(panelGroup)
Obs.: A solução funciona, no entanto eu gostaria de limpar o autocomplete após a inserção do produto.
Alguém poderia me ajudar a entender o que estar acontecendo, por favor?
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;
}
Então, nesse caso vai digitar o codigo de barras e automaticamente inserir o produto sem a necessidade do usuário interagir com a pagina .xhtml. Por isso precisava atualizar pelo managedBean. No entanto, quando faço: context.update("panelInputProdu"); o autocomplete fica como na imagem. Você conhece algum comando tipo: autocomplete.clear()?
se Retirar essa linha: context.update("panelInputProdu"); o código digitado fica no autocoplete e meu objetivo é apaga-lo apos inserir produto no managedBean.
Eu te respondi isso no post acima, é só deixar nulo o atributo referenciado pelo value
É que você pode fazer o update pela página xhtml mesmo e se você passa um id errado é lançado uma exceção, no caso de fazer o update pelo bean você não recebe exceção.
É que você pode fazer o update pela página xhtml mesmo e se você passa um id errado é lançado uma exceção, no caso de fazer o update pelo bean você não recebe exceção.
Desculpa, mas não entendi como faria atualização na pagina já que vai ler o código e automaticamente será adicionado(sem o usuário clicar em Adiconar). E só atualiza se fizer esse comando: context.update("panelInputProdu"); Setei a Quantidade e o produto, mas acredito que seja algum erro na instancia do value. Como pode ser visto na imagem abaixo.
o value na pagina: value="#{vendaControlador.produtoDaVenda.produto}"
Setei no managedBean: produtoDaVenda.setProduto(null)
Se inserir pelo botão adiciona funciona, mas update direto no managebBean não!
Realmente não estou entendendo o que estar acontecendo com o autocomplete, mais uma vez obrigado pela força.
Tenho um Converter de produto. o Autocomplete chama o médodo: produtosSugeridos(String query)como pode ser visto acima. A cada numero digitado vai fazendo a busca no método e retornando o produto. Se digitar 13 numero e encontrar um produto, então eu chamo o AdicionarProdutoNaVenda() sem o usuario clicar no botão adiconar, entendeu? por isso preciso atualizar no managedBean. A quantidade vai, mas o autocomplete dar esse problema.