JSF - richfaces javax.servlet.ServletException

2 respostas
JMarcosR

Boas ! Pessal!

Estou tentando montar um exemplo do richfaces do componente suggestionbox

teste.jsp
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:a4j="http://richfaces.org/a4j"
      xmlns:rich="http://richfaces.org/rich">


		<h:inputText id="id" value="#{oper.operador.id}"/><br></br>
		<h:inputText id="teste" value="#{oper.operador.nome}"/>
		<richfaces:suggestionbox	
			width="150"
			height="150"
			minChars="3"
			suggestionAction="#{oper.autocomplete}"
			var="op"
			id="testasuggestion"
			for="teste">
			<h:column>
				<h:outputText value="#{op.nome}"></h:outputText>
			</h:column>
		</richfaces:suggestionbox>

</ui:composition>
...
    public List<Operador> autocomplete(Object suggest) throws DaoException {
        String pref = (String)suggest;
        ArrayList<Operador> result = new ArrayList<Operador>();

        Iterator<Operador> iterator = ((ArrayList<Operador>)todosOperadores()).iterator(); 
        while (iterator.hasNext()) {
            Operador elem = ((Operador) iterator.next());
            if ((elem.getNome() != null && elem.getNome().toLowerCase().indexOf(pref.toLowerCase()) == 0) || "".equals(pref)){
                result.add(elem);
            }
        }
        return result;
    }
...

O problema acontece quando coloco a terceira letra. Seria para ele abrir a box com as sugestoes mas ele dá o erro :

javax.servlet.ServletException: viewId:/teste.jsf - View /teste.jsf could not be restored.
javax.faces.webapp.FacesServlet.service(FacesServlet.java:270)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)

Dei uma procurada e achei no jira dizendo que os componentes do richfaces podem duplicar id´s e causar esse erro
[url]http://lists.jboss.org/pipermail/richfaces-issues/2009-January/031408.html[/url]

Alguem sabe como eu posso corrigir isso ? minha experiencia em java é bem reduzida ainda ...

Agradeço
João Rueda
Inpacktu.com.br

2 Respostas

JMarcosR

Consegui !

ficou assim ...

<h:inputText id="id" value="#{clientesController.clientes.id}"/><br></br>
	<h:inputText id="nome" value="#{clientesController.clientes.nome}"/>
	<rich:suggestionbox
		width="150"
		height="100"
		for="nome"
		minChars="3"
		nothingLabel="Nada foi encontrado"
		suggestionAction="#{clientesController.suggest}"
		var="res" 
        eventsQueue="foo" ignoreDupResponses="true"
        onobjectchange="processObjectsChange(suggestion)"
		>
			<h:column>
				<h:outputText value="#{res}"></h:outputText>
			</h:column>
	</rich:suggestionbox>

no java ficou

public List suggest(Object begin) throws SiteDAOException{
		String sKeyed = ((String)begin).trim();
		
		ArrayList<String> alResult = new ArrayList<String>();	  
	    
		EmpresaDAO emp = new EmpresaDAO();
	    
	    Iterator<Empresa> iterator = emp.todosEmpresas().iterator(); 
	                
	    while (iterator.hasNext()){
	      String sElem = (String)iterator.next().getFantasia();
	      if (sElem.toLowerCase().startsWith(sKeyed) )
	      { alResult.add(sElem); }
	    }
	    return alResult;
	  }

por enquanto resolvido ...

dcorteztec

JMarcosR muito obrigado ja faz muito tempo q vc escreveu essa pergunta e solução mais salvou vlw

Criado 24 de novembro de 2009
Ultima resposta 23 de jul. de 2010
Respostas 2
Participantes 2