I sometimes use a proxy for doing redirects. *public class RedirectProxy {* * @Persist private String redirectURL;* * @Inject private ComponentResources _resources;* * Object onActivate(){* * try {* * URL url = new URL(redirectURL);* * return url;* * } catch (Exception e) {* * // TODO: handle exception* * } finally{* * _resources.discardPersistentFieldChanges(); * * }* * return Index.class;* * }* * public void setRedirectURL(String redirectURL) {* * this.redirectURL = redirectURL;* * }* * * * public String getRedirectURL() {* * return redirectURL;* * }* *}*
Then from an eventhandler: *redirectProxy.setRedirectURL(u);* *return redirectProxy;* It could perhaps be useful for this case? --magnus On Tue, Aug 23, 2011 at 11:00 PM, Gunnar Eketrapp <gunnar.eketr...@gmail.com > wrote: > Hum .. this did not work so I guess I have to do something on the client > side as well ... > > if (request.isXHR()) { > OutputStream os = > response.getOutputStream("application/json;charset=UTF-8"); > os.write(("{\"script\":\"window.location.replace('" + > link.toAbsoluteURI() + "');\"}").getBytes()); > os.close(); > } else { > response.sendRedirect(link); > } > > > 2011/8/23 Kalle Korhonen <kalle.o.korho...@gmail.com> > > > On Mon, Aug 22, 2011 at 4:42 PM, Howard Lewis Ship <hls...@gmail.com> > > wrote: > > > Actually, perhaps Tapestry's client-side support should, by default, > > > handle 302 correctly. > > > > Yes, perhaps so. But the correctness is "in the eye of the beholder". > > It's clear that a 302 response to a non-ajax request always causes a > > redirect, but not necessarily so for an ajax request. If the default > > behavior was easily overridable then yes, why not. Perhaps I should > > just bring tapestry-exceptionpage functionality to the core. > > > > Kalle > > > > > > > Currently, Tapestry's JSON response for partial page updates includes > > > a special key for performing a redirect. > > > > > > On Mon, Aug 22, 2011 at 2:20 PM, Kalle Korhonen > > > <kalle.o.korho...@gmail.com> wrote: > > >> On Mon, Aug 22, 2011 at 1:27 PM, Gunnar Eketrapp > > >> <gunnar.eketr...@gmail.com> wrote: > > >>> I just rewrote my very old ProtectedPageGateKeeper that implemented > > >>> Dispatcher with a new one > > >>> inspired by Howard's blog > > >>> http://tapestryjava.blogspot.com/search/label/security > > >>> The new one implements ComponentRequestFilter and is better suited > for > > >>> protecting ajax enabled pages. > > >>> So I thought ... > > >>> Now to my problem: > > >>> The redirect that takes place after an ajax call seems to disappear > > into > > >>> thin air. I.e. the page displaying > > >>> a rollling ajax loader is not redirected to my /noacess page. I have > to > > hit > > >>> a full page refresh for the redirect to work. > > >>> Is there some trick needed in order to get the redirect to work for > an > > ajax > > >>> call. > > >>> Sorry for asking stupid newbie questions ... of course I have missed > > >>> something again! > > >> > > >> I don't think it's a stupid newbie question but obviously you cannot > > >> just send 302 uri as a response to an ajax request. If you want a full > > >> page refresh, you can handle it similarly how the tynamo-exceptionpage > > >> module (http://tynamo.org/tapestry-exceptionpage+guide) handles > > >> exceptions in ajax responses > > >> ( > > > http://svn.codehaus.org/tynamo/trunk/tapestry-exceptionpage/src/main/java/org/tynamo/exceptionpage/services/ConfigurableRequestExceptionHandler.java > > ). > > >> Or, take a look at T5.3's new ajax error handler, rendering an iframe > > >> on the fly in response to an ajax error. > > >> > > >> Kalle > > >> > > >> > > >>> 2011-08-22 21:54:53.243 [btpool0-11] DEBUG > > u.s.UtskicketModule.RequestLogger > > >>> - Request: /group/members.grid.pager/1/grid (Method=POST, > > >>> browser=Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 > > Firefox/5.0, > > >>> isXHR=true) > > >>> 2011-08-22 21:54:53.243 [btpool0-11] DEBUG > > >>> u.services.ProtectedPageGateKeeper2 - Page path: > > >>> /group/members.grid.pager/1/grid > > >>> > > >>> 2011-08-22 22:01:06.500 [btpool0-10] DEBUG > > u.s.UtskicketModule.RequestLogger > > >>> - Request: /group/members.grid.pager/7/grid (Method=POST, > > >>> browser=Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 > > Firefox/5.0, > > >>> isXHR=true) > > >>> 2011-08-22 22:01:06.500 [btpool0-10] DEBUG > > >>> u.services.ProtectedPageGateKeeper2 - Page path: > > >>> /group/members.grid.pager/7/grid > > >>> 2011-08-22 22:01:06.500 [btpool0-10] DEBUG > > u.s.UtskicketModule.RequestLogger > > >>> - Request: /noaccess (Method=GET, browser=Mozilla/5.0 (Windows NT > 6.1; > > >>> rv:5.0) Gecko/20100101 Firefox/5.0, isXHR=false) > > >>> > > >>> Note: The return from the request above does not show up in the > browser > > ... > > >>> > > >>> 2011-08-22 22:01:56.956 [btpool0-10] DEBUG > > u.s.UtskicketModule.RequestLogger > > >>> - Request: /group/members/3 (Method=GET, browser=Mozilla/5.0 (Windows > > NT > > >>> 6.1; rv:5.0) Gecko/20100101 Firefox/5.0, isXHR=false) > > >>> 2011-08-22 22:01:56.960 [btpool0-10] DEBUG > > >>> u.services.ProtectedPageGateKeeper2 - Page path: /group/members/3 > > >>> 2011-08-22 22:01:56.964 [btpool0-10] DEBUG > > u.s.UtskicketModule.RequestLogger > > >>> - Request: /noaccess (Method=GET, browser=Mozilla/5.0 (Windows NT > 6.1; > > >>> rv:5.0) Gecko/20100101 Firefox/5.0, isXHR=false) > > >>> > > >>> Note: Now we get to the /noaccess page > > >>> > > >> > > >> --------------------------------------------------------------------- > > >> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > > >> For additional commands, e-mail: users-h...@tapestry.apache.org > > >> > > >> > > > > > > > > > > > > -- > > > Howard M. Lewis Ship > > > > > > Creator of Apache Tapestry > > > > > > The source for Tapestry training, mentoring and support. Contact me to > > > learn how I can get you up and productive in Tapestry fast! > > > > > > (971) 678-5210 > > > http://howardlewisship.com > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > > > For additional commands, e-mail: users-h...@tapestry.apache.org > > > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > > For additional commands, e-mail: users-h...@tapestry.apache.org > > > > > > > -- > [Hem: 08-715 59 57, Mobil: 070-991 86 42] > Allévägen 2A, 132 42 Saltsjö-Boo >