You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by jimmyau <ji...@privasia.com> on 2008/01/02 03:42:59 UTC

Re: Getting all currently loaded managed beans in a phase listener

I dunt think so. spring bean need interface. jsf bean no need interface.

----- Original Message ----- 
From: "Martin Marinschek" <ma...@gmail.com>
To: "MyFaces Discussion" <us...@myfaces.apache.org>
Sent: Thursday, December 13, 2007 4:16 PM
Subject: Re: Getting all currently loaded managed beans in a phase listener


> Hi Todd,
>
> yes, but if you are using Spring for your service beans, you can
> easily use it also for your JSF managed beans.
>
> The suggestion of Gerald and Simon was - don't use the JSF managed
> bean facility at all, use only spring beans (since spring 2.0, you can
> scope them with request/session-scope).
>
> regards,
>
> Martin
>
> On Nov 30, 2007 1:55 AM, Todd Nine <to...@gmail.com> wrote:
>> Thanks guys.  I'll probably just go with the managed property method and 
>> add
>> my inits to the last setter.  I wasn't aware that it is part of the spec
>> that they're loaded in defined order.  Knowing that makes it much easier 
>> to
>> fix the issue.  As far as using Spring beans for business objects, I use 
>> the
>> Spring JSF variable resolver
>> http://static.springframework.org/spring/docs/2.0.x/reference/webintegration.html#jsf
>> to inject my spring beans into my JSF beans with managed properties. 
>> This
>> allows me to wire everything together without the need to add a lot of
>> spring context lookups into my code.
>>
>>
>>
>> On Nov 29, 2007 3:33 PM, simon <si...@chello.at> wrote:
>> > Hi Todd,
>> >
>> > Yes, I agree with Gerald.
>> >
>> > Have a look at catagay's more recent post:
>> >
>> http://cagataycivici.wordpress.com/2007/09/10/using-spring-to-manage-jsf-beans/
>> >
>> > Since Spring 2.0 it has been possible to declare a scope in spring bean
>> > configuration, so there is absolutely no point in using JSF managed
>> > beans at all any more. And then with spring you have proper facilities
>> > to solve this, including (in order of preference for me):
>> >  * injection via constructor params
>> >  * an @PostConstruct annotation within the bean (Spring 2.5)
>> >  * an init-method attribute in the bean config
>> >
>> > If you absolutely cannot move to Spring 2.x then Volker's reply is also
>> > an option: use the last property in the props list for the managed bean
>> > to trigger the init.
>> >
>> > I'm not sure what you mean by "get currently loaded beans". When beans
>> > are created they go into the standard request,session or app scopes 
>> > like
>> > all other variables.
>> >
>> > You could write a custom VariableResolver that delegates all calls down
>> > to the "real" implementation; this will see every request to get a 
>> > bean.
>> > However the problem is that there is no way to know whether the object
>> > returned by the underlying variable resolver has just been created or 
>> > it
>> > already existed.
>> >
>> > You could register a listener on a Session which would get informed of
>> > every variable that gets added to the http session. However AFAIK there
>> > is no equivalent for request scope. Maybe you could override the
>> > HttpRequest object and use a custom map for the properties that
>> > supported a "listener" like session does. All rather tricky though.
>> >
>> > Regards,
>> >
>> > Simon
>> >
>> >
>> >
>> >
>> > On Thu, 2007-11-29 at 20:58 +0100, Gerald Müllan wrote:
>> > > Hi,
>> > >
>> > > why do you define the managed-beans via the jsf-managed-bean 
>> > > facility?
>> > >
>> > > Would be a lot easier if you also define them with the help of 
>> > > spring.
>> > >
>> > > You can use the init-method property in Spring in order to initialize
>> > > your Spring bean.
>> > >
>> > > cheers,
>> > >
>> > > Gerald
>> > >
>> > > On Nov 29, 2007 7:56 PM, Todd Nine <to...@gmail.com> wrote:
>> > > > Hi all,
>> > > >   I'm using a combination of Spring and MyFaces for my project. 
>> > > > Since
>> I use
>> > > > the managed bean properties to inject my Spring beans into my 
>> > > > managed
>> beans,
>> > > > I'm unable to do initialization in the constructor, and I really 
>> > > > need
>> to
>> > > > implement a callback in my managed beans to initialize values from 
>> > > > the
>> > > > Spring business objects.  I have created something similar to the
>> example on
>> > > > the following site.
>> > > >
>> > > >
>> http://cagataycivici.wordpress.com/2006/06/06/managed_beans_aware_of_the/
>> > > >
>> > > > However, I'm dealing with a legacy application, and I can't depend 
>> > > > on
>> a
>> > > > standard naming convention as the example does, there is far too 
>> > > > much
>> code
>> > > > to refactor everything.  Is there any way I can get all currently
>> loaded
>> > > > beans in the current thread instead of using something like the
>> following to
>> > > > explicitly return it?
>> > > >
>> > > >
>> event.getFacesContext().getApplication().createValueBinding(beanName).getValue(ctx);
>> > > >
>> > > > Thanks,
>> > > > Todd
>> > > >
>> > >
>> > >
>> > >
>> >
>> >
>>
>>
>
>
>
> -- 
>
> http://www.irian.at
>
> Your JSF powerhouse -
> JSF Consulting, Development and
> Courses in English and German
>
> Professional Support for Apache MyFaces
>
> -- 
> This message has been scanned for viruses and
> dangerous content by MailScanner, and is
> believed to be clean.
>
>
>
>
>
> -- 
> No virus found in this incoming message.
> Checked by AVG Free Edition.
> Version: 7.5.503 / Virus Database: 269.16.17/1179 - Release Date: 
> 12/9/2007 11:06 AM
>
> 


-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.