[richfaces-issues] [JBoss JIRA] Commented: (RF-8519) Can't create combo box with list of enums

Rodrigo Mesquita (JIRA) jira-events at lists.jboss.org
Thu Apr 29 19:43:05 EDT 2010


    [ https://jira.jboss.org/jira/browse/RF-8519?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12528160#action_12528160 ] 

Rodrigo Mesquita commented on RF-8519:
--------------------------------------

Hi Leonid...

Well... i got this working with this:

// Pagina
        
<rich:comboBox  value="#{controleAction.despesaSelecionada}" 
                suggestionValues="#{controleAction.valoresT}"
                converter="conversorEnum" />

//Action.java        
private TipoDespesa despesaSelecionada;

public List<TipoDespesa> getValoresT(){  
   List<TipoDespesa> valores = new ArrayList<TipoDespesa>();
   
   for (TipoDespesa tipo : TipoDespesa.values()){
        valores.add(tipo);
   }
  
   return valores;
}

//Converter using Seam... if using JSF, remove the notations and reference it on faces-config.xml
package util;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.ConverterException;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.faces.Converter;
import org.jboss.seam.annotations.intercept.BypassInterceptors;
/**
 * Classe utilitária que realiza a conversão de valores
 * Enum do TipoDespesa
 * @author Rodrigo
 */
@Name("conversorEnum") 
@BypassInterceptors 
@Converter
public class ConversorEnum implements javax.faces.convert.Converter{
   /**
    * Transforma a string em Enum
    */
    public Object getAsObject(FacesContext arg0, UIComponent arg1, String valorTela) throws ConverterException {  
     
         if(valorTela == null || valorTela.toString().trim().equals("")){ 
                return null;  
         }
     
        for (TipoDespesa tipo : TipoDespesa.values()){
               if (tipo.getDescricao().compareToIgnoreCase(valorTela) == 0){
                      return tipo;
        }
  }
     
  return null;
  
 }  
    
    /**
     * Converte um TipoDespesa para String
     */
     public String getAsString(FacesContext arg0, UIComponent arg1, Object valorTela) throws ConverterException {  
         if(valorTela == null || valorTela.toString().trim().equals("")){  
             return "";  
         } 
  
         TipoDespesa tipo = (TipoDespesa) valorTela;
         return tipo.getDescricao();  
     } 
} 

// Enum TipoDespesa
public enum TipoDespesa {
   ESSENCIAL("Essencial"),
   SUPERFLUA("Não essencial");
 
   private String descricao;
 
   TipoDespesa(String descricao){
      this.descricao = descricao; 
   }
 
   public String getDescricao() {
      return descricao;
   }
}

> Can't create combo box with list of enums
> -----------------------------------------
>
>                 Key: RF-8519
>                 URL: https://jira.jboss.org/jira/browse/RF-8519
>             Project: RichFaces
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: component
>    Affects Versions: 3.3.1
>         Environment: Windows, JBoss 4.2.2.GA
>            Reporter: Leonid Sokolin
>            Assignee: Nick Belaevski
>         Attachments: piQueryToolCommon.xhtml, TrailingPeriods.java
>
>
> I am trying to use a combo box, which would show the list of objects of the enum class, but it throws the exception below as I open the page.
> I am able to use to the same list for shuttle list though. Could anybody help?
> 11:47:05,140 ERROR [[Faces Servlet]] Servlet.service() for servlet Faces Servlet threw exception
> java.lang.ClassCastException: com.nb.pi.processor.beans.TrailingPeriods
> 	at org.richfaces.renderkit.ComboBoxBaseRenderer.encodeItems(ComboBoxBaseRenderer.java:96)
> 	at org.richfaces.renderkit.html.ComboBoxRenderer.doEncodeEnd(ComboBoxRenderer.java:558)
> 	at org.richfaces.renderkit.html.ComboBoxRenderer.doEncodeEnd(ComboBoxRenderer.java:587)
> 	at org.ajax4jsf.renderkit.RendererBase.encodeEnd(RendererBase.java:134)
> 	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:836)
> 	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:279)
> 	at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:242)
> 	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
> 	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:271)
> 	at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:117)
> 	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
> 	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:271)
> 	at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:242)
> 	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
> 	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
> 	at javax.faces.render.Renderer.encodeChildren(Renderer.java:137)
> 	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
> 	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:271)
> 	at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:242)
> 	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
> 	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:271)
> 	at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:117)
> 	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
> 	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:271)
> 	at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:242)
> 	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
> 	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
> 	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
> 	at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:592)
> 	at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
> 	at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
> 	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
> 	at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
> 	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
> 	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> 	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:510)
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> 	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
> 	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
> 	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
> 	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> 	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
> 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
> 	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
> 	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
> 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
> 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> 	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
> 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
> 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
> 	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
> 	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
> 	at java.lang.Thread.run(Thread.java:595)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       



More information about the richfaces-issues mailing list