Componente Autocomplet Primefaces "desaparece da tela" após update no ManagedBean

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;	
}

Aqui código na página .xhtml

<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>

Imagem do componente

Pra remover do autoComplete é só deixar null o atributo do value.

Pq atualizar pelo bean?

Se você vai dar update em vários componentes, separe-os por espaço e não por vírgula

Falta o fechamento da primeira tag panelGrid

Bom dia Mike, obrigado por ter respondido.

Pq atualizar pelo bean?

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.

Olá Mike,

Eu te respondi isso no post acima, é só deixar nulo o atributo referenciado pelo value

Então, meu value no autocomplete na página é: #{vendaControlador.produtoDaVenda.produto}

managedBean fiz:
produtoDaVenda.setQuantidade(1.0); produtoDaVenda.setProduto(null);

É 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.
erroAutocomplete

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.

O código vai vir do autocomplete, não? Ai o ajax atualiza a página

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.

<h:panelGroup id="panelInputProdu">
						<h:panelGrid							
						 columns="5"
							style="margin:0px 0px 0px 0px; font-size:14px">
							<h:column>
								<div>
									<h:outputText style="display:block;margin:0px 0px 5px 0px"
										value="Quantidade " />
									<p:inputText id="quantidade" tabindex="7"
										style="margin:0px 5px 0px 0px;width:80px;border-radius: 10px;"
										
										value="#{vendaControlador.produtoDaVenda.quantidade}">
										<p:ajax process="@this"/>
									</p:inputText>	
								</div>
							</h:column>
							
							

							
							
							<h:column>
								<h:outputText style="display:block;margin:0px 0px 5px 0px"
										value="Produto " />
								
								<p:autoComplete
									tabindex="8"		
									inputStyle="margin:0px 0px 0px 0px;width:240px;font-size:14px;border-radius: 10px;"
									id="autoProduto" 
									value="#{vendaControlador.produtoDaVenda.produto}"
									completeMethod="#{vendaControlador.produtosSugeridos}" 
									var="p" itemLabel="#{p.nome}"
									converter="produtoConverter" 
									itemValue="#{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>
							
							
							<h:column>
								<p:commandButton icon="ui-icon-search" title="pesquisa"
									tabindex="11"
									style="display:block;margin:22px 5px 0px 0px;height: 26px;background-image:none;"
									action="#{vendaControlador.chamaTelaPesquisaProduto}"
									process="@this" update="autoProduto,:formVenda:precoVenda">

									<p:ajax event="dialogReturn"
										listener="#{vendaControlador.produtoSelecionado}"
										process="@this"
										update="autoProduto :formVenda:precoVenda" />
										
								</p:commandButton>
							</h:column>
							

							<h:column>
								<div>
									<h:outputText style="display:block;margin:0px 0px 5px 0px"
										value="Prec.Venda " />
									<h:inputText id="precoVenda" tabindex="10"
										style="margin:0px 5px 0px 0px;width:80px;border-radius: 10px;"
										value="#{vendaControlador.produtoDaVenda.produto.precoVenda}">
										<f:convertNumber pattern="#,##0.00"></f:convertNumber>
									</h:inputText>
								</div>
							</h:column>

							<h:column>
								<div>
									<p:commandButton value="Adiciona" tabindex="9"
										id="btnAdiciona"
										style="margin:22px 0px 0px 0px;background-image:none;background-color:lightgreen; height:27px !important;border-radius: 10px"
										action="#{vendaControlador.adicionaProdutosNaVenda()}"
										process="@form"
										update="dataInsereProdutos :formVenda:autoProduto :formVenda:total"
										ajax="false" />
								</div>
							</h:column>
						</h:panelGrid>
						</h:panelGroup>