On 3/5/07, gerrit <[EMAIL PROTECTED]> wrote:

This is the way I tried, but it works not for me.

Init-method
FacesContext facesContext = FacesContext.getCurrentInstance();
NavigationHandler navigationHandler =
facesContext.getApplication().getNavigationHandler();
      navigationHandler.handleNavigation(facesContext,
"#{projekteFace.fake}","successAufgaben");
 facesContext.renderResponse();

faces-config.xml:

<navigation-rule>
    <from-view-id>/faces/projekte.jsp</from-view-id>
    <navigation-case>
        <from-outcome>successAufgaben</from-outcome>
        <to-view-id>/faces/aufgaben.jsp</to-view-id>
    </navigation-case>
 </navigation-rule>

The current page is projekte.jsp. My assumption was that after
renderResponce is executed the navigation rule is takes from the
faces-config.xml. After that aufgaben.jsp should be shown and not
projekte.jsp.


Is this view controller the one that is associated with page
"/faces/projekte.jsp"?  That is also important, because the navigation
handler uses that to match the <from-view-id> element of the
navigation rules.

Craig




craigmcc wrote:
>
> It actually is possible to navigate from init(), but you have to do a
> bit more work:
>
>     FacesContext context = FacesContext.getCurrentInstance();
>     NavigationHandler nh =
> context.getApplication().getNavigationHandler();
>     String fromAction = "#{...}"; // Fake expression for the action
> you pretend executed
>     String outcome = "..."; // Fake outcome from the fake action
>     nh.handleNavigation(context, fromAction, outcome);
>     context.renderResponse(); // Skip directly to Render Response phase
>
> The current view, plus the values you specify for fromAction and
> outcome, are fed into the standard navigation rules processing and a
> new view will be selected based on those rules (or the current view
> redisplayed if no rule matches).  The call to renderResponse() causes
> the remainder of the lifecycle for the current page to be skipped.
>
> From an architectural viewpoint, something to consider is whether it
> makes sense to load data in the prerender() event instead of init().
> The advantage is that this will only be executed if this is the page
> that will really be rendered -- if you navigated elsewhere, you won't
> pay the performance cost of loading data that will not be used.  The
> disadvantage is that, by the time prerender() is called, you are
> committed to rendering this page and you cannot navigate anywhere
> else.
>
> Craig
>
>>
>> -----Original Message-----
>> From: gerrit [mailto:[EMAIL PROTECTED]
>> Sent: Friday, March 02, 2007 9:51 AM
>> To: user@shale.apache.org
>> Subject: view controller – site navigation
>>
>>
>>
>> I use the shale view controller init() method to make standard site
>> validations and load data.
>> The init-Method has no return value and so no navigation rule is
>> executed.
>> If one of my validation methods or the load data method returns an error
>> I'd
>> like execute navigation rules. The reason is to go to a special error
>> page.
>> Is there a possibility to navigate to another page from the init-method?
>>
>> --
>> View this message in context:
>> 
http://www.nabble.com/view-controller-%E2%80%93-site-navigation-tf3332431.html#a9266099
>> Sent from the Shale - User mailing list archive at Nabble.com.
>>
>>
>>
>> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
>> *
>>
>> This email with attachments is solely for the use of the individual or
>> entity to whom it is addressed. Please also be aware that DnB NOR cannot
>> accept any payment orders or other legally binding correspondence with
>> customers as a part of an email.
>>
>> This email message has been virus checked by the anti virus programs used
>> in the DnB NOR Group.
>>
>> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
>> *
>>
>>
>
>

--
View this message in context: 
http://www.nabble.com/view-controller-%E2%80%93-site-navigation-tf3332431.html#a9310294
Sent from the Shale - User mailing list archive at Nabble.com.


Reply via email to