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.