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.