I agree.  Shale would be my recommendation also.

sean


On Sat, 12 Mar 2005 08:50:12 +0100, Matthias Wessendorf
<[EMAIL PROTECTED]> wrote:
> Yeah,
> 
> Shale is indeed a nice enhancement for use cases like that.
> init() is much *clearer* than defining stuff inside a constructor.
> 
> -Matthias
> 
> [EMAIL PROTECTED] wrote:
> > You might take a look at Shale.  It addresses this problem by defining a 
> > ViewController interfaces that defines extra lifecycle methods.
> > init()
> > destroy()
> > preprocess()
> > prerender()
> >
> > The ViewController is a managed bean that implements this interface.  There 
> > is also an abstract class that you can inherit from, AbstractViewController.
> >
> > There is an assumed mapping between the managed beans name, the view id and 
> > the ViewController instance.  It uses a filter and a phase listener to 
> > invoke these callback methods to a managed bean/ ViewController.
> >
> > It's pretty cool, http://wiki.apache.org/struts/StrutsShale
> >
> > Gary
> >
> >
> >
> >
> >>Sure. Lazy initialization is a good pattern to follow, but if you have a
> >>lot of getters using the same data it can be ugly to put checks in a lot
> >>of different places. If it's just the one property, then lazy
> >>initialization is definitely the way to go.
> >>
> >>It'd be nice if a bean could optionally implement some managed bean
> >>interface and there'd be onInitialize() method that would get called
> >>automatically if bean so wished (i.e. implements the interface). The
> >>same approach could be used for a lot of other cases as well.
> >>
> >>Kalle
> >>
> >>
> >>>-----Original Message-----
> >>>From: David Gadbois [mailto:[EMAIL PROTECTED]
> >>>Sent: Friday, March 11, 2005 3:31 PM
> >>>To: MyFaces Discussion
> >>>Subject: Re: How to execute bean method before JSF page is loaded?
> >>>
> >>>The pattern I have been using for this sort of thing it to
> >>>have the value accessor in the bean check to see if the data
> >>>has been retrieved and, if not, sets the value up.  E.g.,
> >>>
> >>>public class SomeBean {
> >>>   private Object value = null;
> >>>
> >>>   public Object getValue() {
> >>>     if (value == null) {
> >>>       // Initialize value
> >>>     }
> >>>     return value;
> >>>   }
> >>>
> >>>   public void setValue(Object value) {
> >>>     this.value = value;
> >>>   }
> >>>}
> >>>
> >>>The data table then accesses the value through the getter:
> >>>
> >>><h:dataTable var="item" value="#{someBean.value}">
> >>>
> >>>You could use a PhaseListener on the Render Response phase
> >>>(and JSF 1.2 will have listeners that can be more
> >>>conveniently attached to a particular view), but then you may
> >>>run into problems if some other view logic needs to access
> >>>the value in a prior phase.  For this reason, I have found
> >>>most recommendation for using a PhaseListener to be wrong-headed.
> >>>
> >>>--David Gadbois
> >>>
> >>>
> >>>Jonathan Eric Miller wrote:
> >>>
> >>>>Does anyone know if there is a recommended way to have a
> >>>
> >>>bean method
> >>>
> >>>>executed before a JSF page is loaded? For example, I have a
> >>>
> >>>page with
> >>>
> >>>>a h:dataTable in it. What I want to do is make it so that
> >>>
> >>>when a user
> >>>
> >>>>brings up the page directly (by entering the URL in the
> >>>
> >>>browser text
> >>>
> >>>>box rather than as the result of submitting a form), a bean
> >>>
> >>>method is
> >>>
> >>>>executed which does a query to a database. I want the bean to be
> >>>>populated before the page is rendered. Currently, I'm doing
> >>>
> >>>this using
> >>>
> >>>>a servlet filter. However, one problem with this is that
> >>>
> >>>Faces isn't
> >>>
> >>>>initialized at this point. This isn't a big issue, but, one
> >>>
> >>>issue that
> >>>
> >>>>I ran into is that I was using a managed bean and that bean
> >>>
> >>>might not
> >>>
> >>>>have been created by Faces when the filter executes. So, I put some
> >>>>code in to test if the bean is null or not and it creates it if
> >>>>necessary. I'm wondering if there is a more recommended way
> >>>
> >>>to do this
> >>>
> >>>>within the context of Faces itself. i.e. maybe using a listener or
> >>>>something? Note, I only want the code to execute for a
> >>>
> >>>specific page.
> >>>
> >>>>It seems like there should be some kind of onInit() method
> >>>
> >>>that could
> >>>
> >>>>be overriden to perform initialization before a page is
> >>>
> >>>renderered...
> >>>
> >>>>I don't know much about ASP.NET, but, I think it allows you to do
> >>>>something like this. I guess I could use a scriptlet in the
> >>>
> >>>JSP to do it.
> >>>
> >>>>Jon
> >>>>
> >>>
> >>>
> >
>

Reply via email to