Editado <rich:suggestionbox>

Galera, fiz aqui alguns testes e o erro anterior mudou… criei um novo projeto usando o seam generator e estou tentando adaptar o suggestionbox em uma das telas… agora o que está acontecendo, é que está trazendo o suggestion vazio…

dá um help ai galera… to errando em alguma bobeira de logica…

segue os codigos…

Contatos.java
package org.domain.Contatos.entity;

// Generated 15/08/2008 10:39:02 by Hibernate Tools 3.2.2.GA

import java.util.ArrayList;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 * Contatos generated by hbm2java
 */
@Entity
@Table(name = "contatos", catalog = "thiago")
public class Contatos implements java.io.Serializable {

	private Long id;
	private String nome;
	private String email;
	private String foto;

	public Contatos() {
	}

	public Contatos(String nome, String email, String foto) {
		this.nome = nome;
		this.email = email;
		this.foto = foto;
	}

	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "id", unique = true, nullable = false)
	public Long getId() {
		return this.id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	@Column(name = "nome")
	public String getNome() {
		return this.nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	@Column(name = "email")
	public String getEmail() {
		return this.email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	@Column(name = "foto")
	public String getFoto() {
		return this.foto;
	}

	public void setFoto(String foto) {
		this.foto = foto;
	}

	public static List procurarContatos(String nome) {
		ArrayList contatos = new ArrayList();
		
		if(nome.toUpperCase().startsWith("A")) {
			Contatos a = new Contatos();
			a.getNome();
			a.getEmail();
			a.getFoto();
			contatos.add(a);
		}
		
		return contatos;
	}

}
ContatosHome
package org.domain.Contatos.session;

import java.util.ArrayList;
import java.util.List;

import org.domain.Contatos.entity.*;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.framework.EntityHome;

@Name("contatosHome")
public class ContatosHome extends EntityHome<Contatos> {

	public void setContatosId(Long id) {
		setId(id);
	}

	public Long getContatosId() {
		return (Long) getId();
	}

	@Override
	protected Contatos createInstance() {
		Contatos contatos = new Contatos();
		return contatos;
	}

	public void wire() {
		getInstance();
	}

	public boolean isWired() {
		return true;
	}

	public Contatos getDefinedInstance() {
		return isIdDefined() ? getInstance() : null;
	}
	
	@In(required=false) Contatos contato;
	List contatos;
	
	public ContatosHome() {
		this.contatos = new ArrayList();
	}
	
	public List autocomplete(Object o) {
		return Contatos.procurarContatos(o.toString());
	}
	
	public Contatos getContatos(){
		return contato;
	}
	
	public void setContatos(Contatos contato) {
		this.contato = contato;
	}

}
ContatosList
package org.domain.Contatos.session;

import org.domain.Contatos.entity.*;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.framework.EntityQuery;
import java.util.List;
import java.util.Arrays;

@Name("contatosList")
public class ContatosList extends EntityQuery {

	private static final String[] RESTRICTIONS = {
			"lower(contatos.nome) like concat(lower(#{contatosList.contatos.nome}),'%')",
			"lower(contatos.email) like concat(lower(#{contatosList.contatos.email}),'%')",
			"lower(contatos.foto) like concat(lower(#{contatosList.contatos.foto}),'%')", };

	private Contatos contatos = new Contatos();

	@Override
	public String getEjbql() {
		return "select contatos from Contatos contatos";
	}

	@Override
	public Integer getMaxResults() {
		return 25;
	}

	public Contatos getContatos() {
		return contatos;
	}

	@Override
	public List<String> getRestrictions() {
		return Arrays.asList(RESTRICTIONS);
	}

}
Contatos.xhtml - Essa é uma pagina gerada pelo Seam, que traz o resultado do banco... ai peguei a mesma string que eles usam para puxar os meus contatos no suggestion... mas não deu muito certo...
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
                             "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:s="http://jboss.com/products/seam/taglib"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:rich="http://richfaces.org/rich"
                template="layout/template.xhtml">
                       
<ui:define name="body">
    
    <h:messages globalOnly="true" styleClass="message" id="globalMessages"/>
    
    <rich:panel>
        <f:facet name="header">Contatos</f:facet>



        <s:decorate id="nome" template="layout/display.xhtml">
            <ui:define name="label">nome</ui:define>
            #{contatosHome.instance.nome}
        </s:decorate>


        <s:decorate id="email" template="layout/display.xhtml">
            <ui:define name="label">email</ui:define>
            #{contatosHome.instance.email}
        </s:decorate>


        <s:decorate id="foto" template="layout/display.xhtml">
            <ui:define name="label">foto</ui:define>
            #{contatosHome.instance.foto}
        </s:decorate>

        <div style="clear:both"/>
        
    </rich:panel>
    
    <div class="actionButtons">      

        <s:button view="/ContatosEdit.xhtml" 
                    id="edit" 
                 value="Edit"/>

        <s:button view="/#{empty contatosFrom ? 'ContatosList' : contatosFrom}.xhtml"
                    id="done"
                 value="Done"/>

    </div>

</ui:define>

</ui:composition>
ContatosList.xhtml
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
                             "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:s="http://jboss.com/products/seam/taglib"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:rich="http://richfaces.org/rich"
                template="layout/template.xhtml">
                       
<ui:define name="body">
    
    <h:messages globalOnly="true" styleClass="message" id="globalMessages"/>
    
    <h:form id="contatosSearch" styleClass="edit">
    
        <rich:simpleTogglePanel label="Contatos search parameters" switchType="ajax">
        
            <s:decorate template="layout/display.xhtml">
                <ui:define name="label">nome</ui:define>
                
                <h:inputText id="nome" value="#{contatosList.contatos.nome}" size="50"/>
                
                <rich:suggestionbox id="suggestionbox"
                					for="nome"
                					fetchValue="#{contatosList.contatos.nome}"
                					suggestionAction="#{contatosHome.autocomplete}" 
                					height="250"
                					width="250"
                					var="contato">
                					
                	<h:column>
                		<h:graphicImage value="#{contatosHome.instance.foto}" />
                	</h:column>
                	
                	<h:column>
                		<h:outputText value="#{contatosHome.instance.nome}" />
                	</h:column>
                	
                	<h:column>
                		<h:outputText value="#{contatosHome.instance.email}" />
                	</h:column>
                
                </rich:suggestionbox>
            	
            </s:decorate>
        
        </rich:simpleTogglePanel>
        
        <div class="actionButtons">
            <h:commandButton id="search" value="Search" action="/ContatosList.xhtml"/>
        </div>
        
    </h:form>
    
    <rich:panel>
        <f:facet name="header">Contatos search results</f:facet>
    <div class="results" id="contatosList">

    <h:outputText value="The contatos search returned no results." 
               rendered="#{empty contatosList.resultList}"/>
               
    <rich:dataTable id="contatosList" 
                var="contatos"
              value="#{contatosList.resultList}" 
           rendered="#{not empty contatosList.resultList}">
        <h:column>
            <f:facet name="header">
                <s:link styleClass="columnHeader"
                             value="id #{contatosList.order=='id asc' ? messages.down : ( contatosList.order=='id desc' ? messages.up : '' )}">
                    <f:param name="order" value="#{contatosList.order=='id asc' ? 'id desc' : 'id asc'}"/>
                </s:link>
            </f:facet>
            #{contatos.id}
        </h:column>
        <h:column>
            <f:facet name="header">
                <s:link styleClass="columnHeader"
                             value="nome #{contatosList.order=='nome asc' ? messages.down : ( contatosList.order=='nome desc' ? messages.up : '' )}">
                    <f:param name="order" value="#{contatosList.order=='nome asc' ? 'nome desc' : 'nome asc'}"/>
                </s:link>
            </f:facet>
            #{contatos.nome}
        </h:column>
        <h:column>
            <f:facet name="header">
                <s:link styleClass="columnHeader"
                             value="email #{contatosList.order=='email asc' ? messages.down : ( contatosList.order=='email desc' ? messages.up : '' )}">
                    <f:param name="order" value="#{contatosList.order=='email asc' ? 'email desc' : 'email asc'}"/>
                </s:link>
            </f:facet>
            #{contatos.email}
        </h:column>
        <h:column>
            <f:facet name="header">
                <s:link styleClass="columnHeader"
                             value="foto #{contatosList.order=='foto asc' ? messages.down : ( contatosList.order=='foto desc' ? messages.up : '' )}">
                    <f:param name="order" value="#{contatosList.order=='foto asc' ? 'foto desc' : 'foto asc'}"/>
                </s:link>
            </f:facet>
            #{contatos.foto}
        </h:column>
        <h:column>
            <f:facet name="header">action</f:facet>
            <s:link view="/#{empty from ? 'Contatos' : from}.xhtml" 
                   value="Select" 
                      id="contatos">
                <f:param name="contatosId" 
                        value="#{contatos.id}"/>
            </s:link>
        </h:column>
    </rich:dataTable>

    </div>
    </rich:panel>
    
    <div class="tableControl">
      
        <s:link view="/ContatosList.xhtml" 
            rendered="#{contatosList.previousExists}" 
               value="#{messages.left}#{messages.left} First Page"
                  id="firstPage">
          <f:param name="firstResult" value="0"/>
        </s:link>
        
        <s:link view="/ContatosList.xhtml" 
            rendered="#{contatosList.previousExists}" 
               value="#{messages.left} Previous Page"
                  id="previousPage">
            <f:param name="firstResult" 
                    value="#{contatosList.previousFirstResult}"/>
        </s:link>
        
        <s:link view="/ContatosList.xhtml" 
            rendered="#{contatosList.nextExists}" 
               value="Next Page #{messages.right}"
                  id="nextPage">
            <f:param name="firstResult" 
                    value="#{contatosList.nextFirstResult}"/>
        </s:link>
        
        <s:link view="/ContatosList.xhtml" 
            rendered="#{contatosList.nextExists}" 
               value="Last Page #{messages.right}#{messages.right}"
                  id="lastPage">
            <f:param name="firstResult" 
                    value="#{contatosList.lastFirstResult}"/>
        </s:link>
        
    </div>
    
    <s:div styleClass="actionButtons" rendered="#{empty from}">
        <s:button view="/ContatosEdit.xhtml"
                    id="create" 
                 value="Create contatos">
            <f:param name="contatosId"/>
        </s:button>
    </s:div>
    
</ui:define>

</ui:composition>

up…

pessoal alguém???

galera, ninguem manja um suggestion trazendo resultado do banco??? :cry: