On 9/25/06, emily chen <[EMAIL PROTECTED]> wrote:

Hi Craig,

  I could not receive the email from [email protected], but I saw your
response on shale user mail-archive.

  Why I need to add an instance of VC as request attribute? That is good
question~{!-~}


I thought it might be :-).

 In our web application, we have 10 VC that extends TestVC, and TestVC
extends AbstractViewController.  There is a header.jsp that is included in
all pages. In this header.jsp, we need to use the information of TestVC to
decide the navigation rule among pages. So we add an instance of TestVC as
request attribute, and access it in header.jsp.  we don't specify a TestVC
bean in faces-config.xml file.

  We will find a way to solve the problem since this is not a bug in the
lastest version of shale framework.


One general approach to this kind of problem is to do what managed beans do
by default -- if there is already a bean by that name, use it; otherwise,
create a new one.  In a view controller that extends AbstractViewController,
this is trivially easy to accomplish:

   TestVC testVC = (TestVC) getBean("TestVC");

This will accomplish the same thing that evaluating an expression that
starts "TestVC" does ... if the bean already exists, it is returned --
otherwise, a new one is created.  This will avoid multiple creations of the
same bean, and therefore multiple fireing of the lifecycle methods.

Alternatively, since you are not actually using TestVC as a ViewController,
you could simply *not* make it extend AbstractViewController.  If you still
like the convenience methods like getBean() and getValue(), make your class
extend AbstractFacesBean instead.


 Many thanks,

   Luo


Craig

Reply via email to