Your method works and creates a bean instance - i wonder why the other
method didn't.

Thank you very much - i'm relieved that this works now.

On Fri, Aug 19, 2011 at 3:07 PM, Rudy De Busscher <[email protected]>wrote:

> Hi Toby,
>
> I thought they were created when requested through EL.  So it should work.
>
> I see that you are using something different to execute an EL expression.
> This is what I use.
>
> *        FacesContext facesContext = getFacesContext();
>        Application app = facesContext.getApplication();
>        ExpressionFactory elFactory = app.getExpressionFactory();
>        ELContext elContext = facesContext.getELContext();
>        ValueExpression valueExp =
>            elFactory.createValueExpression(elContext, expression,
> Object.class);
>        return valueExp.getValue(elContext);
> *
> where expression is something like #{sessionBean}. Can you try the above
> statements
>
> regards
> Rudy
> On 19 August 2011 14:52, Tobias Eisentrager <[email protected]
> >wrote:
>
> > Thank you for the tip - it helped me. The problem was that the Bean did
> not
> > exist yet. And yes - it also did not need to have the capital S.
> > If i now go to a page which uses the sessionBean it will get created and
> > then I can use the findBean Method inside another Bean.
> > Is there a way to create a Bean Instance programmatically?
> > In JSF 1.2 we used this Method:
> >
> > /**
> >  * Gibt die BackingBean mit dem Namen pName zurück.
> >  * Ist die BackingBean noch nicht vorhanden, wird die Bean erzeugt.
> >  *
> >  * @param pString
> >  * @return Object
> >  */
> > public static Object getBackingBean( String pName ) {
> >  ELContext elContext = FacesContext.getCurrentInstance().getELContext();
> >  Object ret = elContext.getELResolver().getValue(elContext, null, pName);
> >  return ret;
> > }
> >
> > It would create an instance if it wasn't there before. Is there something
> > similar in JSF2 I can add to the findBean method so that it creates an
> > instance instead of returning null?
> >
> > Toby
> >
> > On Fri, Aug 19, 2011 at 2:08 PM, Rudy De Busscher <[email protected]
> > >wrote:
> >
> > > Maybe stupid thing, but have you checked the case of your bean name (is
> > it
> > > "sessionBean" or "SessionBean" or ...)
> > >
> > > If the bean is supposed to be on the session, you can have access (to
> > > verify
> > > if the bean exists) to it with the command
> > >
> > > FacesContext.getCurrentInstance().getExternalContext().getSessionMap();
> > >
> > > regards
> > > Rudy
> > >
> > > On 19 August 2011 12:49, Tobias Eisentrager <
> > [email protected]
> > > >wrote:
> > >
> > > > I tried Jakob's suggestion but it did not work - it returns null.
> > > >
> > > > Are there any other ways to access the current SessionBeans?
> > > >
> > > > Or, maybe the design of the App is not good - maybe i'm doing
> something
> > > > wrong.
> > > >
> > > > Here is what i want to do:
> > > >
> > > > I have a Class which I use for all Server communication called
> > > > DataConnector. It is a private member of my main Session Bean, called
> > > > SessionBean. So, when I need Data i want to fire a command like this:
> > > >
> > > > Code in some ManagedBean:
> > > >
> > > > List<Item> items = null;
> > > >
> > > > public List<Item> getItems() {
> > > >    if(items==null) {
> > > >        SessionBean sessionB = (SessionBean)
> > > > JSF2Util.findBean("SessionBean");
> > > >        List<Item> items = sessionB.getDataConnector().cmdGetItems();
> > > >    }
> > > >    return items;
> > > > }
> > > >
> > > > JSF2Util:
> > > >
> > > > @SuppressWarnings("unchecked")
> > > > public static <T> T findBean(String beanName) {
> > > > FacesContext context = FacesContext.getCurrentInstance();
> > > > return (T) context.getApplication().evaluateExpressionGet(context,
> "#{"
> > +
> > > > beanName + "}", Object.class);
> > > > }
> > > >
> > > > Since the findBean does not work for some reason, should I do this
> > > scenario
> > > > different?
> > > >
> > > > Oh, all this used to work in JSF 1.2 in another similar app of mine.
> > > >
> > > > Thanks
> > > >
> > > > Toby
> > > >
> > > >
> > > >
> > > > On Mon, Jun 27, 2011 at 4:41 AM, Leonardo Uribe <[email protected]>
> > > wrote:
> > > >
> > > > > Hi
> > > > >
> > > > > I have been thinking about this one, and maybe there is a
> > > > > misunderstanding with @ManagedProperty annotation. That annotation
> is
> > > > > not servlet api, is in JSF or in java EE (i don't know which subset
> > > > > are you using). If is the JSF variant, note that annotation only
> > works
> > > > > for managed beans, so you can't use it on other objects that are
> not
> > > > > instantiated by JSF.
> > > > >
> > > > > The suggestion of Jakob should work.
> > > > >
> > > > > regards,
> > > > >
> > > > > Leonardo Uribe
> > > > >
> > > > > 2011/6/26 Jakob Korherr <[email protected]>:
> > > > > > Hi,
> > > > > >
> > > > > > Try using this:
> > > > > >
> > > > > > FacesContext facesContext = FacesContext.getCurrentInstance();
> > > > > > YourBean yourBean =
> > > > > > facesContext.getApplication().evaluateExpressionGet(facesContext,
> > > > > > "#{yourBean}", YourBean.class);
> > > > > >
> > > > > > Regards,
> > > > > > Jakob
> > > > > >
> > > > > > 2011/6/26 Tobias Eisentrager <[email protected]>:
> > > > > >> Hello Group - this is my private email address.
> > > > > >>
> > > > > >> I have already asked this on
> > > > > >>
> > > > >
> > > >
> > >
> >
> http://stackoverflow.com/questions/6466783/access-another-managed-bean-in-jsf2-1-with-servlet-2-4
> > > > > >> and have not gotten a sufficient answer yet.
> > > > > >>
> > > > > >> We have recently upgraded from JSF 1.2 to 2.1. We are running on
> > > > > >> WebSphere 6.1 which has Servlet 2.4
> > > > > >>
> > > > > >> We are using the following libraries: myfaces 2.1.1 el-api-2.2
> > > > > >>
> > > > > >> Now the only problem we have is that we cannot access the other
> > > > > >> Backing Beans like we did before with:
> > > > > >>
> > > > > >> public static Object getBackingBean( String pName ) {
> > > > > >>   ELContext elContext =
> > > > > FacesContext.getCurrentInstance().getELContext();
> > > > > >>   Object ret = elContext.getELResolver().getValue(elContext,
> null,
> > > > > pName);
> > > > > >>   return ret;
> > > > > >> }
> > > > > >>
> > > > > >> This will always return null. We have also tried:
> > > > > >>
> > > > > >> Beanclass bean = (Beanclass)
> > > > > FacesContext.getCurrentInstance().getApplication()
> > > > > >> .getELResolver().getValue(elContext, null, "beanclass");
> > > > > >>
> > > > > >> which return null as well.
> > > > > >>
> > > > > >> We have tried the @ManagedProperty annotation but this is
> > apparently
> > > a
> > > > > >> Servlet 2.5 feature. Is it possible that the ELContext uses DI
> now
> > > by
> > > > > >> default? Is there a way to get an Instance of another backing
> Bean
> > > in
> > > > > >> JSF2.1 and Servlet 2.4?
> > > > > >>
> > > > > >> Thanks!
> > > > > >>
> > > > > >> Toby
> > > > > >>
> > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > Jakob Korherr
> > > > > >
> > > > > > blog: http://www.jakobk.com
> > > > > > twitter: http://twitter.com/jakobkorherr
> > > > > > work: http://www.irian.at
> > > > > >
> > > > >
> > > >
> > >
> > >
> > >
> > > --
> > > Rudy De Busscher
> > > http://www.c4j.be
> > >
> >
>
>
>
> --
> Rudy De Busscher
> http://www.c4j.be
>

Reply via email to