[ 
https://issues.apache.org/jira/browse/MYFACES-3011?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12980228#action_12980228
 ] 

Leonardo Uribe commented on MYFACES-3011:
-----------------------------------------

I have checked the provided file and the syntax is invalid. The converterId for 
javax.faces.convert.EnumConverter is javax.faces.Enum, but in this case we need 
to set converter targetClass property.

One alternative is use a binding like this:

<h:selectOneMenu value="#{enumBean.selection}" 
converter="#{enumBean.categoryConverter}">
   <f:selectItems value="#{enumBean.categories}"/>
</h:selectOneMenu>

and on the bean (Category is the enum):

public enum Category {
  ......
}

    public Converter getCategoryConverter()
    {
        if (categoryConverter == null)
        {
            categoryConverter = new EnumConverter(Category.class);
        }
        return categoryConverter;
    }

the #{enumBean.categories} expression is bound using this code in the bean:

    public Category[] getCategories()
    {
        return Category.class.getEnumConstants();
    }

There is an error on MYFACES-2920 to be solved soon related, but this report is 
not valid, so I have to close it as invalid.

> conversion of enum fails
> ------------------------
>
>                 Key: MYFACES-3011
>                 URL: https://issues.apache.org/jira/browse/MYFACES-3011
>             Project: MyFaces Core
>          Issue Type: Bug
>          Components: General
>    Affects Versions: 2.0.3
>         Environment: Google AppEngine, el-impl-1.1.jar
>            Reporter: Axel Krebs
>         Attachments: sa_detail.xhtml
>
>
> SEVERE: An exception occurred
> javax.faces.FacesException: java.lang.IllegalArgumentException: Cannot 
> convert javax.faces.component.html.htmlselectonem...@84b8f9 of type class 
> javax.faces.component.html.HtmlSelectOneMenu to class 
> de.akrebs.shop.domain.Category
>       at 
> org.apache.myfaces.shared_impl.context.ExceptionHandlerImpl.wrap(ExceptionHandlerImpl.java:241)
>       at 
> org.apache.myfaces.shared_impl.context.ExceptionHandlerImpl.handle(ExceptionHandlerImpl.java:156)
>       at 
> org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:258)
>       at javax.faces.webapp.FacesServlet.service(FacesServlet.java:191)
>       at 
> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
>       at 
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
>       at 
> com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58)
>       at 
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
>       at 
> com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
>       at 
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
>       at 
> com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
>       at 
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
>       at 
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
>       at 
> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
>       at 
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
>       at 
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
>       at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
>       at 
> com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
>       at 
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
>       at 
> com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:349)
>       at 
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
>       at org.mortbay.jetty.Server.handle(Server.java:326)
>       at 
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
>       at 
> org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938)
>       at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
>       at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
>       at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
>       at 
> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
>       at 
> org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
> Caused by: java.lang.IllegalArgumentException: Cannot convert 
> javax.faces.component.html.htmlselectonem...@84b8f9 of type class 
> javax.faces.component.html.HtmlSelectOneMenu to class 
> de.akrebs.shop.domain.Category
>       at com.sun.el.lang.ELSupport.coerceToEnum(ELSupport.java:196)
>       at com.sun.el.lang.ELSupport.coerceToType(ELSupport.java:363)
>       at com.sun.el.parser.AstValue.setValue(AstValue.java:164)
>       at com.sun.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:273)
>       at 
> org.apache.myfaces.view.facelets.el.TagValueExpression.setValue(TagValueExpression.java:117)
>       at 
> org.apache.myfaces.application.ApplicationImpl.createComponent(ApplicationImpl.java:442)
>       at 
> org.apache.myfaces.application.ApplicationImpl.createComponent(ApplicationImpl.java:462)
>       at 
> org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.createComponent(ComponentTagHandlerDelegate.java:511)
>       at 
> org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:263)
>       at 
> javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:54)
>       at 
> javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:51)
>       at 
> javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:59)
>       at 
> org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:324)
>       at 
> javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:54)
>       at 
> org.apache.myfaces.view.facelets.tag.ui.DefineHandler.applyDefinition(DefineHandler.java:86)
>       at 
> org.apache.myfaces.view.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:167)
>       at 
> org.apache.myfaces.view.facelets.impl.TemplateContextImpl$TemplateManagerImpl.apply(TemplateContextImpl.java:128)
>       at 
> org.apache.myfaces.view.facelets.impl.TemplateContextImpl.includeDefinition(TemplateContextImpl.java:92)
>       at 
> org.apache.myfaces.view.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:433)
>       at 
> org.apache.myfaces.view.facelets.tag.ui.InsertHandler.apply(InsertHandler.java:93)
>       at 
> javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:51)
>       at 
> org.apache.myfaces.view.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:57)
>       at 
> javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:51)
>       at 
> org.apache.myfaces.view.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:45)
>       at 
> org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:322)
>       at 
> org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:369)
>       at 
> org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:347)
>       at 
> org.apache.myfaces.view.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:215)
>       at 
> org.apache.myfaces.view.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:140)
>       at 
> org.apache.myfaces.view.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:57)
>       at 
> org.apache.myfaces.view.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:45)
>       at 
> org.apache.myfaces.view.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:143)
>       at 
> org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.buildView(FaceletViewDeclarationLanguage.java:329)
>       at 
> org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:66)
>       at 
> org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:239)
>       ... 26 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to