RichFaces

5 respostas
S

Pessoal estou com o seguinte problema qdo tento carregar um combobox selectOneMenu utilizando o richfaces. Quando carrego a pagina é lançado o seguinte erro que não encontrou o metodo:

Erro Lançado:

root cause 

org.apache.jasper.el.JspPropertyNotFoundException: /index.jsp(50,20) '#{contatoManager.carregaComboContatos}' Property 'carregaComboContatos' not found on type br.com.jsfajax.web.mbean.ContatoManager
	org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:104)
	javax.faces.component.UISelectItems.getValue(UISelectItems.java:130)
	com.sun.faces.renderkit.RenderKitUtils.getSelectItems(RenderKitUtils.java:323)
	com.sun.faces.renderkit.html_basic.MenuRenderer.getOptionNumber(MenuRenderer.java:675)
	com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:793)
	com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:335)
	javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:836)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:896)
	javax.faces.render.Renderer.encodeChildren(Renderer.java:137)
	javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
	com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:245)
	com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:176)
	org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
	org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:189)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:154)
	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:260)
	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:366)
	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:493)
	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

Abaixo segue o codigo utilizado na paginma JSF:

Pagina JSF:

Tags:
<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>

           <h:form>
               <h:selectOneMenu value="#{contatoManager.Contato.id}">
                    <f:selectItems value="#{contatoManager.carregaComboContatos}" />
                </h:selectOneMenu>
           </h:form>
Managed Bean (Metodo chamado)


public SelectItem[] getCarregaComboContatos(){   

            //List<Contato> lp = contatos;   
            List<SelectItem> itens = new ArrayList<SelectItem>(contatos.size());   
  
            for( Contato p : contatos ){   
                itens.add( new SelectItem(p.getId(), p.getNome()) );   
            }// for end   
            return itens.toArray( new SelectItem[itens.size()] )
}
faces-config.xml

     <managed-bean-name>contatoManager</managed-bean-name>
     <managed-bean-class>br.com.jsfajax.web.mbean.ContatoManager</managed-bean-class>
     <managed-bean-scope>session</managed-bean-scope>

Está tudo configurado, alguem sabe o porq?

Falow T++

5 Respostas

rdgms

Opa… se eu não me engano o value dele recebe uma lista não o id…

spycall

Tente trocar seu SelectItem[] por um List e retorne a variavel itens direto, sem fazer toArray

S

Sim, a lista é carregada para o selectItems value <f:selectItems value="#{contatoManager.carregaComboContatos}" />

o problema esta ae, ele não consegue encontrar este metodo…,
já tentei alterar varias vezes e nada.

Alguem que usa richfaces qual comopente combobox que usam, porq este já esta ficando foda heheh

Falow

spycall
Tente assim:
private List<SelectItem> itens;

public List<SelectItem> getItens(){
      return itens;
}
e no construtor ou em algum metodo que inicia vc popula a variavel itens, no seu JSF vc coloca #{contatoManager.itens}
S
spycall:
Tente assim:
private List<SelectItem> itens;

public List<SelectItem> getItens(){
      return itens;
}
e no construtor ou em algum metodo que inicia vc popula a variavel itens, no seu JSF vc coloca #{contatoManager.itens}

Opa..agora funco, mais passou a dar o seguinte erro:

exception

javax.servlet.ServletException: Expected a child component type of UISelectItem/UISelectItems for component type javax.faces.SelectOne(j_id_jsp_694007051_14).  Found null.
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:154)
	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:260)
	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:366)
	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:493)
	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

root cause

java.lang.IllegalArgumentException: Expected a child component type of UISelectItem/UISelectItems for component type javax.faces.SelectOne(j_id_jsp_694007051_14).  Found null.
	com.sun.faces.renderkit.RenderKitUtils.getSelectItems(RenderKitUtils.java:357)
	com.sun.faces.renderkit.html_basic.MenuRenderer.getOptionNumber(MenuRenderer.java:675)
	com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:793)
	com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:335)
	javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:836)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:896)
	javax.faces.render.Renderer.encodeChildren(Renderer.java:137)
	javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
	com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:245)
	com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:176)
	org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
	org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:189)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:154)
	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:260)
	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:366)
	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:493)
	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

Eu realizei os testes e a lista esta vindo carregada: será que esta correto este?

<h:selectOneMenu value="#{contatoManager.Contato.id}">

Pelo que eu percebo deveria vir certo ou não/

Valeu,

Criado 5 de fevereiro de 2009
Ultima resposta 5 de fev. de 2009
Respostas 5
Participantes 3