You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by "Howard W. Smith, Jr." <sm...@gmail.com> on 2012/11/20 16:57:02 UTC

Migrating to CDI: Could not find any registered converter-class by converterId

Hmmmm, one of the many issues that I need to resolve is this exception that
I'm only experiencing only on one xhtml page in my JSF web app, so far (as
I haven't regression tested all pages yet).


   1. pf_RoleController is CDI managed bean via @Named and @SessionScoped
      1. this has no @FacesConverter
      2. @Named("pf_roleController")
   2. RoleController is JSF @RequestScoped managed bean
      1. contains @FacesConverter(forClass = Role.class)
      2. @ManagedBean(name = "roleController")
   3. pf_UsersController is CDI managed bean via @Named and @SessionScoped
      1. injects and references pf_RoleController (see code below)

    @Inject
    private pf_RoleController pf_roleController;

Below is the exception that I experience when I click View or Edit button,
which will open 2 separate xhtml pages, that evidently is attempting to use
the RoleControllerConverter.

SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path
[/mcmsweb] threw exception [Could not find any registered converter-class
by converterId : roleControllerConverter] with root cause
javax.faces.FacesException: Could not find any registered converter-class
by converterId : roleControllerConverter
at
org.apache.myfaces.application.ApplicationImpl.createConverter(ApplicationImpl.java:1511)
at
javax.faces.application.ApplicationWrapper.createConverter(ApplicationWrapper.java:164)
at
org.apache.myfaces.view.facelets.tag.jsf.ValueHolderRule$LiteralConverterMetadata.applyMetadata(ValueHolderRule.java:50)
at
org.apache.myfaces.view.facelets.tag.MetadataImpl.applyMetadata(MetadataImpl.java:45)
at
javax.faces.view.facelets.MetaTagHandler.setAttributes(MetaTagHandler.java:66)
at
javax.faces.view.facelets.DelegatingMetaTagHandler.setAttributes(DelegatingMetaTagHandler.java:93)
at
org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:237)
at
javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
at
javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:58)
at
org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:294)
at
javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
at
javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:49)
at
javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:58)
at
org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:294)
at
javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
at
javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:49)
at
javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:58)
at
org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:294)
at
javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
at
javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:49)
at
javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:58)
at
org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:294)
at
javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
at
javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:49)
at
javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:58)
at
org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:294)
at
javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
at
org.apache.myfaces.view.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:158)
at
org.apache.myfaces.view.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:57)
at
org.apache.myfaces.view.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:48)
at
org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:394)
at
org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:448)
at
org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:426)
at
org.apache.myfaces.view.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:244)
at
org.apache.myfaces.view.facelets.tag.ui.IncludeHandler.apply(IncludeHandler.java:217)
at
javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:58)
at
org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:294)
at
javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
at
javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:49)
at
javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:58)
at
org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:294)
at
javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
at
javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:49)
at
javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:58)
at
org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:294)
at
javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
at
org.apache.myfaces.view.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:156)
at
javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:58)
at
org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:294)
at
javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
at
javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:49)
at
org.apache.myfaces.view.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:57)
at
javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:49)
at
org.apache.myfaces.view.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:48)
at
org.apache.myfaces.view.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:179)
at
org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.buildView(FaceletViewDeclarationLanguage.java:452)
at
org.apache.myfaces.view.facelets.DefaultFaceletsStateManagementStrategy.restoreView(DefaultFaceletsStateManagementStrategy.java:273)
at
org.apache.myfaces.application.StateManagerImpl.restoreView(StateManagerImpl.java:130)
at
org.apache.myfaces.shared.view.ViewDeclarationLanguageBase.restoreView(ViewDeclarationLanguageBase.java:106)
at
org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.restoreView(FaceletViewDeclarationLanguage.java:2118)
at
org.apache.myfaces.application.ViewHandlerImpl.restoreView(ViewHandlerImpl.java:300)
at
javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:83)
at
org.omnifaces.viewhandler.RestorableViewHandler.restoreView(RestorableViewHandler.java:66)
at
javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:83)
at
org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:127)
at
org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:170)
at
org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at
org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at
org.omnifaces.filter.GzipResponseFilter.doFilter(GzipResponseFilter.java:148)
at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:75)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at pf.LoginFilter.doFilter(LoginFilter.java:175)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:45)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)

Re: Migrating to CDI: Could not find any registered converter-class by converterId

Posted by "Howard W. Smith, Jr." <sm...@gmail.com>.
Finally, I went with the following, but for some reason the p:ajax
event="transfer" is not updating my database, and I don't get an ajax
status or message stating that database has been updated. I may need to
report this to PrimeFaces when CDI is used.

*xhtml*
<p:pickList id="pickList" *converter="roleControllerConverter"*


*bean*
    @FacesConverter("roleControllerConverter")
    public static class RoleControllerConverter implements Converter {



On Tue, Nov 20, 2012 at 2:05 PM, Howard W. Smith, Jr. <
smithh032772@gmail.com> wrote:

> Well, blow me down. PrimeFaces picklist component requires me to hardcode
> the converter name, and this is breaking my CDI app.
>
> <p:pickList id="pickList" *converter="roleControllerConverter"*
>             value="#{pf_roleController.rolesPickList}"
>             var="role" itemLabel="#{role.roleName}" itemValue="#{role}">
>     <f:facet name="sourceCaption">Available</f:facet>
>     <f:facet name="targetCaption">Assigned</f:facet>
>     <p:ajax event="transfer" listener="#{pf_roleController.onTransfer}"
>             update=":userDetailForm:_ajax_status
> :userDetailForm:formMessages roleTabPanel"/>
> </p:pickList>
>
> So..., as per the following,
>
> How can I inject in @FacesConverter?<http://stackoverflow.com/questions/13156671/how-can-i-inject-in-facesconverter>
>
> and I changed xhtml to as follows:
>
> <p:pickList id="pickList" *converter="#{roleControllerConverter}"*
>             value="#{pf_roleController.rolesPickList}"
>             var="role" itemLabel="#{role.roleName}" itemValue="#{role}">
>     <f:facet name="sourceCaption">Available</f:facet>
>     <f:facet name="targetCaption">Assigned</f:facet>
>     <p:ajax event="transfer" listener="#{pf_roleController.onTransfer}"
>             update=":userDetailForm:_ajax_status
> :userDetailForm:formMessages roleTabPanel"/>
> </p:pickList>
>
>
> and I added converter to CDI @SessionScoped pf_RoleController, and I
> tested what Mark recommended earlier (bolded below), and now I am not
> getting this exception anymore, but PrimeFaces p:pickList is not updating
> database as it in via JSF Managed Bean.
>
>     @Named
>     @RequestScoped
>     public static class RoleControllerConverter implements Converter {
>
>         public Object getAsObject(FacesContext facesContext, UIComponent
> component, String value) {
>             if (value == null || value.length() == 0) {
>                 return null;
>             }
>             pf_RoleController controller = *
> BeanManagerProvider.getInstance().*
> *
>  getContextualReference(pf_RoleController.class);*
>             if (controller == null) {
>                 System.out.println("RoleControllerConverter.getAsObject()
> failed to get instance of pf_RoleController");
>                 return null;
>             }
>             return controller.ejbFacade.find(value);
>         }
>
>         public String getAsString(FacesContext facesContext, UIComponent
> component, Object object) {
>             if (object == null) {
>                 return null;
>             }
>             if (object instanceof Role) {
>                 Role o = (Role) object;
>                 return o.getRoleName();
>             } else {
>                 throw new IllegalArgumentException("object " + object + "
> is of type " + object.getClass().getName() + "; expected type: " +
> Role.class.getName());
>             }
>         }
>     }
>
>
>
> On Tue, Nov 20, 2012 at 10:57 AM, Howard W. Smith, Jr. <
> smithh032772@gmail.com> wrote:
>
>> Hmmmm, one of the many issues that I need to resolve is this exception
>> that I'm only experiencing only on one xhtml page in my JSF web app, so far
>> (as I haven't regression tested all pages yet).
>>
>>
>>    1. pf_RoleController is CDI managed bean via @Named and @SessionScoped
>>       1. this has no @FacesConverter
>>       2. @Named("pf_roleController")
>>    2. RoleController is JSF @RequestScoped managed bean
>>       1. contains @FacesConverter(forClass = Role.class)
>>       2. @ManagedBean(name = "roleController")
>>    3. pf_UsersController is CDI managed bean via @Named and
>>    @SessionScoped
>>       1. injects and references pf_RoleController (see code below)
>>
>>     @Inject
>>     private pf_RoleController pf_roleController;
>>
>> Below is the exception that I experience when I click View or Edit
>> button, which will open 2 separate xhtml pages, that evidently is
>> attempting to use the RoleControllerConverter.
>>
>> SEVERE: Servlet.service() for servlet [Faces Servlet] in context with
>> path [/mcmsweb] threw exception [Could not find any registered
>> converter-class by converterId : roleControllerConverter] with root cause
>> javax.faces.FacesException: Could not find any registered converter-class
>> by converterId : roleControllerConverter
>> at
>> org.apache.myfaces.application.ApplicationImpl.createConverter(ApplicationImpl.java:1511)
>>  at
>> javax.faces.application.ApplicationWrapper.createConverter(ApplicationWrapper.java:164)
>> at
>> org.apache.myfaces.view.facelets.tag.jsf.ValueHolderRule$LiteralConverterMetadata.applyMetadata(ValueHolderRule.java:50)
>>  at
>> org.apache.myfaces.view.facelets.tag.MetadataImpl.applyMetadata(MetadataImpl.java:45)
>> at
>> javax.faces.view.facelets.MetaTagHandler.setAttributes(MetaTagHandler.java:66)
>>  at
>> javax.faces.view.facelets.DelegatingMetaTagHandler.setAttributes(DelegatingMetaTagHandler.java:93)
>>  at
>> org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:237)
>>  at
>> javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
>>  at
>> javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:58)
>>  at
>> org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:294)
>>  at
>> javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
>>  at
>> javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:49)
>> at
>> javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:58)
>>  at
>> org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:294)
>>  at
>> javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
>>  at
>> javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:49)
>> at
>> javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:58)
>>  at
>> org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:294)
>>  at
>> javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
>>  at
>> javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:49)
>> at
>> javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:58)
>>  at
>> org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:294)
>>  at
>> javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
>>  at
>> javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:49)
>> at
>> javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:58)
>>  at
>> org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:294)
>>  at
>> javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
>>  at
>> org.apache.myfaces.view.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:158)
>> at
>> org.apache.myfaces.view.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:57)
>>  at
>> org.apache.myfaces.view.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:48)
>> at
>> org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:394)
>>  at
>> org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:448)
>> at
>> org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:426)
>>  at
>> org.apache.myfaces.view.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:244)
>>  at
>> org.apache.myfaces.view.facelets.tag.ui.IncludeHandler.apply(IncludeHandler.java:217)
>> at
>> javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:58)
>>  at
>> org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:294)
>>  at
>> javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
>>  at
>> javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:49)
>> at
>> javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:58)
>>  at
>> org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:294)
>>  at
>> javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
>>  at
>> javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:49)
>> at
>> javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:58)
>>  at
>> org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:294)
>>  at
>> javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
>>  at
>> org.apache.myfaces.view.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:156)
>> at
>> javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:58)
>>  at
>> org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:294)
>>  at
>> javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
>>  at
>> javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:49)
>> at
>> org.apache.myfaces.view.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:57)
>>  at
>> javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:49)
>> at
>> org.apache.myfaces.view.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:48)
>>  at
>> org.apache.myfaces.view.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:179)
>> at
>> org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.buildView(FaceletViewDeclarationLanguage.java:452)
>>  at
>> org.apache.myfaces.view.facelets.DefaultFaceletsStateManagementStrategy.restoreView(DefaultFaceletsStateManagementStrategy.java:273)
>>  at
>> org.apache.myfaces.application.StateManagerImpl.restoreView(StateManagerImpl.java:130)
>> at
>> org.apache.myfaces.shared.view.ViewDeclarationLanguageBase.restoreView(ViewDeclarationLanguageBase.java:106)
>>  at
>> org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.restoreView(FaceletViewDeclarationLanguage.java:2118)
>>  at
>> org.apache.myfaces.application.ViewHandlerImpl.restoreView(ViewHandlerImpl.java:300)
>> at
>> javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:83)
>>  at
>> org.omnifaces.viewhandler.RestorableViewHandler.restoreView(RestorableViewHandler.java:66)
>>  at
>> javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:83)
>> at
>> org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:127)
>>  at
>> org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:170)
>> at
>> org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
>>  at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
>>  at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>>  at
>> org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>>  at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>>  at
>> org.omnifaces.filter.GzipResponseFilter.doFilter(GzipResponseFilter.java:148)
>> at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:75)
>>  at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>>  at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>>  at pf.LoginFilter.doFilter(LoginFilter.java:175)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>>  at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>>  at
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
>> at
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
>>  at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:45)
>> at
>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
>>  at
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
>> at
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
>>  at
>> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
>> at
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>>  at
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
>> at
>> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
>>  at
>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
>>  at
>> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
>> at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>>  at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>> at java.lang.Thread.run(Thread.java:722)
>>
>>
>

Re: Migrating to CDI: Could not find any registered converter-class by converterId

Posted by "Howard W. Smith, Jr." <sm...@gmail.com>.
Well, blow me down. PrimeFaces picklist component requires me to hardcode
the converter name, and this is breaking my CDI app.

<p:pickList id="pickList" *converter="roleControllerConverter"*
            value="#{pf_roleController.rolesPickList}"
            var="role" itemLabel="#{role.roleName}" itemValue="#{role}">
    <f:facet name="sourceCaption">Available</f:facet>
    <f:facet name="targetCaption">Assigned</f:facet>
    <p:ajax event="transfer" listener="#{pf_roleController.onTransfer}"
            update=":userDetailForm:_ajax_status
:userDetailForm:formMessages roleTabPanel"/>
</p:pickList>

So..., as per the following,

How can I inject in
@FacesConverter?<http://stackoverflow.com/questions/13156671/how-can-i-inject-in-facesconverter>

and I changed xhtml to as follows:

<p:pickList id="pickList" *converter="#{roleControllerConverter}"*
            value="#{pf_roleController.rolesPickList}"
            var="role" itemLabel="#{role.roleName}" itemValue="#{role}">
    <f:facet name="sourceCaption">Available</f:facet>
    <f:facet name="targetCaption">Assigned</f:facet>
    <p:ajax event="transfer" listener="#{pf_roleController.onTransfer}"
            update=":userDetailForm:_ajax_status
:userDetailForm:formMessages roleTabPanel"/>
</p:pickList>


and I added converter to CDI @SessionScoped pf_RoleController, and I tested
what Mark recommended earlier (bolded below), and now I am not getting this
exception anymore, but PrimeFaces p:pickList is not updating database as it
in via JSF Managed Bean.

    @Named
    @RequestScoped
    public static class RoleControllerConverter implements Converter {

        public Object getAsObject(FacesContext facesContext, UIComponent
component, String value) {
            if (value == null || value.length() == 0) {
                return null;
            }
            pf_RoleController controller = *
BeanManagerProvider.getInstance().*
*
 getContextualReference(pf_RoleController.class);*
            if (controller == null) {
                System.out.println("RoleControllerConverter.getAsObject()
failed to get instance of pf_RoleController");
                return null;
            }
            return controller.ejbFacade.find(value);
        }

        public String getAsString(FacesContext facesContext, UIComponent
component, Object object) {
            if (object == null) {
                return null;
            }
            if (object instanceof Role) {
                Role o = (Role) object;
                return o.getRoleName();
            } else {
                throw new IllegalArgumentException("object " + object + "
is of type " + object.getClass().getName() + "; expected type: " +
Role.class.getName());
            }
        }
    }



On Tue, Nov 20, 2012 at 10:57 AM, Howard W. Smith, Jr. <
smithh032772@gmail.com> wrote:

> Hmmmm, one of the many issues that I need to resolve is this exception
> that I'm only experiencing only on one xhtml page in my JSF web app, so far
> (as I haven't regression tested all pages yet).
>
>
>    1. pf_RoleController is CDI managed bean via @Named and @SessionScoped
>       1. this has no @FacesConverter
>       2. @Named("pf_roleController")
>    2. RoleController is JSF @RequestScoped managed bean
>       1. contains @FacesConverter(forClass = Role.class)
>       2. @ManagedBean(name = "roleController")
>    3. pf_UsersController is CDI managed bean via @Named and @SessionScoped
>       1. injects and references pf_RoleController (see code below)
>
>     @Inject
>     private pf_RoleController pf_roleController;
>
> Below is the exception that I experience when I click View or Edit button,
> which will open 2 separate xhtml pages, that evidently is attempting to use
> the RoleControllerConverter.
>
> SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path
> [/mcmsweb] threw exception [Could not find any registered converter-class
> by converterId : roleControllerConverter] with root cause
> javax.faces.FacesException: Could not find any registered converter-class
> by converterId : roleControllerConverter
> at
> org.apache.myfaces.application.ApplicationImpl.createConverter(ApplicationImpl.java:1511)
>  at
> javax.faces.application.ApplicationWrapper.createConverter(ApplicationWrapper.java:164)
> at
> org.apache.myfaces.view.facelets.tag.jsf.ValueHolderRule$LiteralConverterMetadata.applyMetadata(ValueHolderRule.java:50)
>  at
> org.apache.myfaces.view.facelets.tag.MetadataImpl.applyMetadata(MetadataImpl.java:45)
> at
> javax.faces.view.facelets.MetaTagHandler.setAttributes(MetaTagHandler.java:66)
>  at
> javax.faces.view.facelets.DelegatingMetaTagHandler.setAttributes(DelegatingMetaTagHandler.java:93)
>  at
> org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:237)
>  at
> javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
>  at
> javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:58)
>  at
> org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:294)
>  at
> javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
>  at
> javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:49)
> at
> javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:58)
>  at
> org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:294)
>  at
> javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
>  at
> javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:49)
> at
> javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:58)
>  at
> org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:294)
>  at
> javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
>  at
> javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:49)
> at
> javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:58)
>  at
> org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:294)
>  at
> javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
>  at
> javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:49)
> at
> javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:58)
>  at
> org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:294)
>  at
> javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
>  at
> org.apache.myfaces.view.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:158)
> at
> org.apache.myfaces.view.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:57)
>  at
> org.apache.myfaces.view.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:48)
> at
> org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:394)
>  at
> org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:448)
> at
> org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:426)
>  at
> org.apache.myfaces.view.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:244)
>  at
> org.apache.myfaces.view.facelets.tag.ui.IncludeHandler.apply(IncludeHandler.java:217)
> at
> javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:58)
>  at
> org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:294)
>  at
> javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
>  at
> javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:49)
> at
> javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:58)
>  at
> org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:294)
>  at
> javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
>  at
> javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:49)
> at
> javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:58)
>  at
> org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:294)
>  at
> javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
>  at
> org.apache.myfaces.view.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:156)
> at
> javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:58)
>  at
> org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:294)
>  at
> javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
>  at
> javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:49)
> at
> org.apache.myfaces.view.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:57)
>  at
> javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:49)
> at
> org.apache.myfaces.view.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:48)
>  at
> org.apache.myfaces.view.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:179)
> at
> org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.buildView(FaceletViewDeclarationLanguage.java:452)
>  at
> org.apache.myfaces.view.facelets.DefaultFaceletsStateManagementStrategy.restoreView(DefaultFaceletsStateManagementStrategy.java:273)
>  at
> org.apache.myfaces.application.StateManagerImpl.restoreView(StateManagerImpl.java:130)
> at
> org.apache.myfaces.shared.view.ViewDeclarationLanguageBase.restoreView(ViewDeclarationLanguageBase.java:106)
>  at
> org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.restoreView(FaceletViewDeclarationLanguage.java:2118)
>  at
> org.apache.myfaces.application.ViewHandlerImpl.restoreView(ViewHandlerImpl.java:300)
> at
> javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:83)
>  at
> org.omnifaces.viewhandler.RestorableViewHandler.restoreView(RestorableViewHandler.java:66)
>  at
> javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:83)
> at
> org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:127)
>  at
> org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:170)
> at
> org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
>  at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
>  at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>  at
> org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>  at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>  at
> org.omnifaces.filter.GzipResponseFilter.doFilter(GzipResponseFilter.java:148)
> at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:75)
>  at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>  at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>  at pf.LoginFilter.doFilter(LoginFilter.java:175)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>  at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>  at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
>  at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:45)
> at
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
>  at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
>  at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>  at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
> at
> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
>  at
> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
>  at
> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>  at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
> at java.lang.Thread.run(Thread.java:722)
>
>