>From the Shale http://struts.apache.org/shale/features.html#view
Each backing bean that implements ViewController will
support a boolean property postback, which will be set to
true if this view is the one that is processing a form
submit previously rendered by the same page, or false if
this view was newly navigated to. The property will be set before any
of the lifecycle methods described below are called, so that application
logic may perform conditional tasks based on this state.
As part of the standard JavaServer Faces managed beans processing, any
<managed-property> elements in the configuration
file, that are nested inside the <managed-bean>
element for this backing bean, will also be processed when a new bean
instance is created. You can use either literal values or value binding
expressions to customize properties on your backing bean class. Fans
of Dependency Injection will see that the managed beans facility
provides support for such a framework, using Setter Injection as the
mechanism for injecting dependencies.
-
init() - Called immediately after the view that
this backing bean is associated with is created. (Technically, it
happens when
ViewManager.createView()is called.) For a postback, this happens during the Restore View phase of the request processing lifecycle, once it ha been determined which view should be restored. If your application navigates from one page to another, theinit()method of the second page will be called as part of theNavigationHandler.handleNavigation()processing.Use this method to acquire resources that you will need, no matter whether this is a postback request, a rendering request, or both.
-
preprocess() - Called after the Restore View
phase has been completed, but before Apply Request Values
phase starts, only for the view that will be
processing the postback.
Use this method to acquire resources (such as database connections) that you will need to process the postback.
-
prerender() - Called immediately before the
Render Response phase that actually causes the view to
be rendered. This method will only be called for
the view that is actually rendered (the current view if you are
redisplaying, or the new view if you perform navigation).
Use this method to acquire resources (such as database connections, or performing queries) that you will need if this view is the one to be rendered. NOTE - when portlet support is integrated, all of the portlets on the current page will receive this event.
-
destroy() - If
init()was ever called for aViewController, then it is guaranteed thatdestroy()will be called as well.Use this method to release any resources acquired during an earlier event handler.
Ah I just googled, the AbstractViewController is Shale,
that explains a lot ;-)...
Craig if you read this, I thought that one point of JSF was
to get rid of the Form-Action division of struts towards a more
generalized approach?
Does the AbstractViewController do something special in Shale or
is it simply a class to ease the transition from Struts
and enforce MVC?
Werner
Werner Punz wrote:
> Looks quite good,
> but one thing struck me...
> Your structure is very Struts like, which is not really needed.
>
> >extends AbstractViewController
>
> you wont need that in JSF unless you have something really
> important down there, which you have to reuse
>
> also you wont need to think in actions and forms (beans)
> like you do in struts, everything is a backing bean.
> A divided MVC approach is very viable, but
> you also can use a simplified combined model controller approach.
> Sun uses this strategy in their studio creator
> to enable a Visual basic like handling of the backend code.
>
>
>
> Rick Reumann wrote:
>
>> Eventually I want to turn this small example into a walk through
>> lesson/tutorial. Before I get to that point, I could really use the
>> help of those that know what they are talking about to look over this
>> example and provide suggestions on how to fix it up. Since I'm new to
>> JSF/MyFaces, I'm sure there are some things that could be done better.
>>
>> This won't be the final look and feel of the site, it's just for
>> working through the suggestions and improvements on this example..
>>
>> http://www.reumann.net/reumann/jsf/jsf_employees/
>>
>> You can click on the source code of most of the files from the left
>> menu frame or you could download the source, war, whatever.
>>
>> Let's not put all those answers you gave to my noob questions go in
>> vain:)
>>
>
>
--
Rick

