Dúvida ao obter parametro de autocomplete

Olá pessoal, estou com uma dúvida, como obter o parâmetro deste autocomplete e utilizá-lo para passar para o commandLink abaixo e buscasse através deste método.

A ideia é que obtivesse o conteúdo deste autoComplete para passar para o método abaixo neste comandLink.

O commandLink obtém um valor e repassa para um método que retorna uma lista baseada em um nome, cujo gostaria de obter a partir do <p:autoComplete>.

Muito obrigado.

autocomplete:

				&lt;div id="campos"&gt;
					&lt;p:autoComplete value="#{empresaBean.empresa.nome}" var="empresa"
						completeMethod="#{empresaBean.autocompleteEmpresa}"
						itemLabel="#{empresa.nome}" itemValue="#{empresa.nome}"
						converter="Converter"
						onkeyup="this.value = this.value.toUpperCase();" size="100"
						maxResults="5"&gt;
					&lt;/p:autoComplete&gt;
				&lt;/div&gt;

&lt;div id="botaopesq"&gt; &lt;p:commandLink actionListener="#{empresaBean.buscarPorNome}" title="Pesquisar" value="#{empresa.nome}" action="pesquisa"&gt; &lt;h:graphicImage library="images" name="botao.png" width="118" height="27" style="border:0" /&gt; &lt;f:setPropertyActionListener target="#{empresaBean.empresa}" value="#{empresa}" /&gt; &lt;/p:commandLink&gt;

Deixa eu ver se eu entendi direito, você está recebendo um valor no seu componente autoComplete, e quer usar esse valor no método invocado pelo commandButton?

Exatamente, quero obtero valor que eu digitar/clicar do <p:autocomplete> em um <commandLink>, sendo que no final, passá-lo para o ActionListener correspondente do commandLink.

Mas esse valor já não está armazenado no seu model?

ele deveria ter sido atribuído à variável referenciada na EL do componente autoComplete, isso não ocorreu ?

Não, vem vazia após a seleção.

O atributo nome dentro do atributo empresa dentro do seu bean não tem nada?

Se não tiver você precisa ver se seu converter está sendo invocado.

Vou debugar, mas a impressão é de nem passar pelo método.

Atributo nome está vazio, nem executa o hql no DAO.

Seu autoComplete não está funcionando então ?

O autcomplete funciona normalmente.

Meu converter.

[code]package com.portal.view;

import java.lang.reflect.Field;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import javax.persistence.Id;

@FacesConverter(value = "Converter")
public class EntityConverter implements Converter {

public Object getAsObject(FacesContext ctx, UIComponent component,
		String value) {
	System.out.println(&quot;ECV-GO&quot;);
	if (value != null) {
		return component.getAttributes().get(value);
	}
	return null;
}

public String getAsString(FacesContext ctx, UIComponent component,
		Object obj) {
	System.out.println(&quot;ECV-GS&quot;);
	if (obj != null && !&quot;&quot;.equals(obj)) {
		String id;
		try {
			id = this.getId(getClazz(ctx, component), obj);
			if (id == null) {
				id = &quot;&quot;;
			}
			id = id.trim();
			component.getAttributes().put(id,
					getClazz(ctx, component).cast(obj));
			return id;
		} catch (SecurityException e) {
			e.printStackTrace(); 
		} catch (IllegalArgumentException e) {
			e.printStackTrace(); 
		} catch (NoSuchFieldException e) {
			e.printStackTrace(); 
		} catch (IllegalAccessException e) {
			e.printStackTrace(); 
		}
	}
	return null;
}

private Class&lt;?&gt; getClazz(FacesContext facesContext, UIComponent component) {
	return component.getValueExpression(&quot;value&quot;).getType(
			facesContext.getELContext());
}

public String getId(Class&lt;?&gt; clazz, Object obj) throws SecurityException,
		NoSuchFieldException, IllegalArgumentException,
		IllegalAccessException {
	for (Field field : clazz.getDeclaredFields()) {
		if ((field.getAnnotation(Id.class)) != null) {
			Field privateField = clazz.getDeclaredField(field.getName());
			privateField.setAccessible(true);
			if (privateField.get(clazz.cast(obj)) != null) {
				return (String) field.getType()
						.cast(privateField.get(clazz.cast(obj))).toString();
			} else {
				return null;
			}
		}
	}
	return null;
}

}[/code]

ao executar o getAsObject, qual o valor retornado?

Vou por um breakpoint aki.

Não sei se está certo , mas :
org.primefaces.component.autocomplete.AutoComplete@f30883

Pela sua EL, eu imagino que você quer recuperar a String do nome da Empresa, portanto não creio que esteja correto. Tente assim:public Object getAsObject(FacesContext ctx, UIComponent component, String value) { System.out.println("ECV-GO"); return value; } O normal seria buscar o Objeto Empresa, mas como você só usa o nome na EL, acho que isso resolve.

Funfou o que eu digito, mas não o que eu seleciono!!!.
brigadíssimo.

digaoneves, pode dar uma força agora?