Suggestionbox

Boa tarde amigos,
Estou desenvolvendo uma aplicação e nela eu preciso ter um campo para o usuário digitar um texto, nesse campo quando o usuário digitar a primeira letra da palavra o sistema deverá mostrar todas as palavras cadastradas no banco com aquela letra. Até ai tudo bem, estou conseguindo fazer iisso com o suggestionbox, mas o problema é quando vou escrever a segunda palavra no campo, essa 2º palavra apaga a primeira palavra e assim sucessivamente, e eu precisa que todas as palavras ficam nesse campo. alguém tem alguma idéia de como poderia fazer???
Vou colocar meus códigos aqui pra ficar mais facil.

[color=red]JSP[/color]:
[b]<h:form id=“frmDigitarTexto”>
a4j:outputPanel
<rich:editor id=“edtTexto” height=“200” width=“600” value="#{PalavrasMBean.texto}"/>

               <rich:spacer width="20"/>

               <h:inputText id="texto" value="#{PalavrasMBean.texto}"/>
               <a4j:support event="onkeyup" reRender="edtTexto"/>
               <%--     <h:outputText id="teste" value="#{PalavrasMBean.frase}"/>   --%>

                <rich:suggestionbox id="suggestionBoxId" for="texto" var="result"
                                    bgcolor="#FFFFFF"
                                    suggestionAction="#{PalavrasMBean.carregarSugestao}"
                                    width="200" height="150" >
                    <h:column>
                        <h:outputText id="optPalavraSelecionada" value="#{result.texto}">
                            <a4j:support event="onselect" action="#{PalavrasMBean.concatenacao}">
                                <f:setPropertyActionListener target="#{PalavrasMBean.palavraSelecionada}" value="#{result}"  />
                            </a4j:support>
                        </h:outputText>
                    </h:column>
                </rich:suggestionbox>

               <rich:spacer width="10"/>

               <h:commandButton id="cbtnVerPalavra" action="gotoListPalavras" value="Verificar Palavras"/>
                
           </a4j:outputPanel>
        </h:form>[/b]

[color=red]BEAN[/color]:
[b]public List getCachedPalavras() {
if (cachedPalavras == null) {
cachedPalavras = palavrasDAO.getPalavras();
}
return cachedPalavras;
}

public void setCachedPalavras(List<Palavras> cachedPalavras) {
    this.cachedPalavras = cachedPalavras;
}

public PalavrasDAO getPalavrasDAO() {
    return palavrasDAO;
}

public void setPalavrasDAO(PalavrasDAO palavrasDAO) {
    this.palavrasDAO = palavrasDAO;
}

// Método para adicionar nova palavra;
public String doAddPalavras() {
selectedPalavras = new Palavras();
return “gotoAddNewPalavras”;
}

// Método para voltar a listar as palavras e grava efetivamente uma nova palavra;
public String finishAddPalavras() {
palavrasDAO.addPalavras(selectedPalavras);
cachedPalavras = null;
return “gotoListPalavras”;
}

// Método para excluir uma palavra;
public String doRemovePalavras() {
palavrasDAO.removePalavras(selectedPalavras);
cachedPalavras = null;
return “gotoListPalavras”;
}

// Método para editar uma palavra
public String doUpdatePalavras() {
return “gotoUpdatePalavras”;
}

// Método para voltar a listar as palavras e editar efetivamente uma palavra;
public String finishUpdateProduct() {
palavrasDAO.updatePalavras(selectedPalavras);
cachedPalavras = null;
return “gotoListPalavras”;
}

// Método que carrega a palavra do banco pelo texto;
public List carregarSugestao(Object palavra){

    String ultimaPalavra = "";
    String palavrasAnteriores = "";
    String textoDigitado =  (String)palavra;

    List<Palavras> listaPalavras = new ArrayList<Palavras>();

    String[] palavras = textoDigitado.split(" ");
    System.out.println(palavra);

// Esse for pega as palavras anteriores a última
for(int x=0; x < palavras.length-1 ;x++){

        palavrasAnteriores += palavras[x] +" ";
        System.out.println(palavrasAnteriores);  
    }

    this.palavrasAnteriores = palavrasAnteriores;

// Essa linha pega a última palavra digitada;
ultimaPalavra = palavras[palavras.length-1];
System.out.println(ultimaPalavra);

    listaPalavras = palavrasDAO.buscaPalavra(ultimaPalavra);

    return listaPalavras;
}

// Método que faz a concatenação das palavras anterioes a última com a última palavra digitada;
public String getConcatenacao() {

    frase = palavrasAnteriores + palavraSelecionada;

    return frase;
}


public Palavras getSelectedPalavras() {
    return selectedPalavras;
}

public void setSelectedPalavras(Palavras selectedPalavras) {
    this.selectedPalavras = selectedPalavras;
}

public String getPalavrasAnteriores() {
    return palavrasAnteriores;
}

public void setPalavrasAnteriores(String palavrasAnteriores) {
    this.palavrasAnteriores = palavrasAnteriores;
}

public String getUltimaPalavra() {
    return ultimaPalavra;
}

public void setUltimaPalavra(String ultimaPalavra) {
    this.ultimaPalavra = ultimaPalavra;
}

public void setPalavraSelecionada(Palavras palavraSelecionada) {
    this.palavraSelecionada = palavraSelecionada;
}

public Palavras getPalavraSelecionada() {
    return palavraSelecionada;
}

public void setTexto(String texto) {
    this.texto = texto;
}

public String getTexto() {
    return texto;
}

public void setFrase(String frase) {
    this.frase = frase;
}

public String getFrase() {
    return frase;
}[/b]

[color=red]DAO[/color]
[b]public class PalavrasDAO extends GenericDAO {

private static final long serialVersionUID = 1L;
private Session session;

public PalavrasDAO(Session session){
    this.session  = session;
}

public PalavrasDAO() {
    this.session = getSession();
}


public int addPalavras(Palavras palavras) {
    saveOrUpdatePojo(palavras);
    return palavras.getCodigo();
}

public void removePalavras(Palavras palavras) {
    removePojo(palavras);
}

public void updatePalavras(Palavras palavras) {
    saveOrUpdatePojo(palavras);
}

public Palavras getPalavras(int palavrasCodigo) {
    Palavras palavras =  getPojo(Palavras.class, palavrasCodigo);
    return palavras;
}

public List<Palavras> getPalavras() {
    return getPureList(Palavras.class,"from Palavras palavras");
}

public void setPalavras(Palavras palavras) {
    Session ses = getSession();
    ses.update(palavras);
    ses.getTransaction().commit();
    ses.close();
}

public Palavras getPalavras(String textoPalavra) {
    Palavras palavras =  getPojo(Palavras.class, textoPalavra);
    return palavras;
}

// método que busca palavras no Banco de Dados iniciadas com uma determinada string;
public List buscaPalavra(String texto) {

    Session ses = getSession();

    if (texto == null)
        return (List<Palavras>) ses.createCriteria(Palavras.class).list();
    return (List<Palavras>) ses
                .createCriteria(Palavras.class)
                .add(Restrictions.ilike("texto", texto+"%"))
                .list(); 
}

} [/b]

Se alguém puder me ajudar eu agradeço.

Abraço.

Nnguém?