Why removing static? It means it is no more manageable by cdi (cdi cant do
a new on it)
Le 19 nov. 2012 22:13, "Howard W. Smith, Jr." <smithh032...@gmail.com> a
écrit :

> @Advanced was found in the following:
>
> import org.apache.myfaces.extensions.cdi.core.api.Advanced;
>
> After some tinkering, I removed 'static' from the following definition,
>
> public static class AddressTypeControllerConverter implements Converter {
>
> I also added @Advanced to the FacesConverter/Converter, and latest error is
> the following:
>
> Nov 19, 2012 4:08:21 PM javax.faces.component._ExternalSpecifications
> isBeanValidationAvailable
> INFO: MyFaces Bean Validation support enabled
> Nov 19, 2012 4:08:21 PM org.apache.myfaces.application.ApplicationImpl
> internalCreateConverter
> SEVERE: Could not instantiate converter class
> jsf.address.pf_AddressTypeController$AddressTypeControllerConverter
> java.lang.InstantiationException:
> jsf.address.pf_AddressTypeController$AddressTypeControllerConverter
>
>
>
> On Mon, Nov 19, 2012 at 3:07 PM, Howard W. Smith, Jr. <
> smithh032...@gmail.com> wrote:
>
> > I searched google, found the following:
> >
> > CDI Injection into a FacesConverter<
> http://stackoverflow.com/questions/7531449/cdi-injection-into-a-facesconverter
> >
> >
> > which lead me to:
> >
> > MyFaces Extensions CDI > JSF Usage > Dependency Injection<
> https://cwiki.apache.org/confluence/display/EXTCDI/JSF+Usage#JSFUsage-DependencyInjection
> >
> >
> > but I don't which library to import for @Advanced.
> >
> > If @Advanced can be used (since I am using CODI), then this would be
> great.
> >
> >
> > On Mon, Nov 19, 2012 at 2:56 PM, Romain Manni-Bucau <
> rmannibu...@gmail.com
> > > wrote:
> >
> >> Maybe use BeanProvider of deltaspike
> >> Le 19 nov. 2012 20:50, "Howard W. Smith, Jr." <smithh032...@gmail.com>
> a
> >> écrit :
> >>
> >> > Hmmm... after thinking about it, I remembered to use @Inject on the
> bean
> >> > which I want to inject. So, I did the following:
> >> >
> >> >     @FacesConverter(forClass = AddressType.class)
> >> >     public static class AddressTypeControllerConverter implements
> >> Converter
> >> > {
> >> >
> >> >         @Inject
> >> >         private pf_AddressTypeController controller;
> >> >
> >> >         public Object getAsObject(FacesContext facesContext,
> UIComponent
> >> > component, String value) {
> >> >             if (value == null || value.length() == 0) {
> >> >                 return null;
> >> >             }
> >> >             return controller.ejbFacade.find(getKey(value));
> >> >         }
> >> >
> >> > but 'controller' is still not being injected. I even tried the same
> for
> >> the
> >> > actual 'ejbFacade' (which is a stateless bean), but that, too,
> resulted
> >> in
> >> > a NullPointerException, which tells me that @Inject is not injecting
> >> > pf_AddressTypeController (@sessionscoped bean) OR ejbFacade
> (@Stateless
> >> > bean instance of AddressTypeFacade).
> >> >
> >> >
> >> > Is there a general practice used for injecting beans in Converters..
> >> >
> >> >
> >> >
> >> > On Mon, Nov 19, 2012 at 2:38 PM, Romain Manni-Bucau
> >> > <rmannibu...@gmail.com>wrote:
> >> >
> >> > > Can you reproduce it in a sample? What is on the npe line?
> >> > > Le 19 nov. 2012 20:25, "Howard W. Smith, Jr." <
> smithh032...@gmail.com>
> >> a
> >> > > écrit :
> >> > >
> >> > > > I am still migrating my app from JSF Managed beans to CDI managed
> >> > beans,
> >> > > so
> >> > > > I am (regression) testing, and I came across the exception below
> >> when
> >> > > > attempting to add a record into the database on one of the xhtml
> >> pages.
> >> > > >
> >> > > > Caused by: java.lang.NullPointerException
> >> > > >         at
> >> > > >
> >> > >
> >> >
> >>
> jsf.address.pf_AddressTypeController$AddressTypeControllerConverter.getAsObject(pf_AddressTypeController.java:283)
> >> > > >
> >> > > >
> >> > > > The exception is caused by this line below. *ejbFacade* is a
> >> stateless
> >> > > bean
> >> > > > injected by @Inject.
> >> > > >
> >> > > >             return controller.*ejbFacade*.find(getKey(value));
> >> > > >
> >> > > >
> >> > > > The code below is as-is using JSF Managed Beans. Please advise on
> >> how I
> >> > > > should update the following code, so it will work well with CDI.
> >> > > >
> >> > > >     @FacesConverter(forClass = AddressType.class)
> >> > > >     public static class AddressTypeControllerConverter implements
> >> > > Converter
> >> > > > {
> >> > > >
> >> > > >         public Object getAsObject(FacesContext facesContext,
> >> > UIComponent
> >> > > > component, String value) {
> >> > > >             if (value == null || value.length() == 0) {
> >> > > >                 return null;
> >> > > >             }
> >> > > >             pf_AddressTypeController controller =
> >> > > > (pf_AddressTypeController)
> >> > facesContext.getApplication().getELResolver().
> >> > > >                     getValue(facesContext.getELContext(), null,
> >> > > > "pf_addressTypeController");
> >> > > >             return controller.ejbFacade.find(getKey(value));
> >> > > >         }
> >> > > >
> >> > > >         java.lang.Integer getKey(String value) {
> >> > > >             java.lang.Integer key;
> >> > > >             key = Integer.valueOf(value);
> >> > > >             return key;
> >> > > >         }
> >> > > >
> >> > > >         String getStringKey(java.lang.Integer value) {
> >> > > >             StringBuffer sb = new StringBuffer();
> >> > > >             sb.append(value);
> >> > > >             return sb.toString();
> >> > > >         }
> >> > > >
> >> > > >         public String getAsString(FacesContext facesContext,
> >> > UIComponent
> >> > > > component, Object object) {
> >> > > >             if (object == null) {
> >> > > >                 return null;
> >> > > >             }
> >> > > >             if (object instanceof AddressType) {
> >> > > >                 AddressType o = (AddressType) object;
> >> > > >                 return getStringKey(o.getAddressTypeId());
> >> > > >             } else {
> >> > > >                 throw new IllegalArgumentException("object " +
> >> object
> >> > + "
> >> > > > is of type " + object.getClass().getName() + "; expected type: " +
> >> > > > pf_AddressTypeController.class.getName());
> >> > > >             }
> >> > > >         }
> >> > > >     }
> >> > > > }
> >> > > >
> >> > >
> >> >
> >>
> >
> >
>

Reply via email to