You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "Jesse Kuhnert (JIRA)" <ta...@jakarta.apache.org> on 2007/02/17 18:36:05 UTC

[jira] Closed: (TAPESTRY-399) If a RedirectException is thrown after IEngine.setLocale(...) has been called, the cookie org.apache.tapestry.locale is not being set

     [ https://issues.apache.org/jira/browse/TAPESTRY-399?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jesse Kuhnert closed TAPESTRY-399.
----------------------------------

    Resolution: Invalid
      Assignee: Jesse Kuhnert

You can change the locale quite easily by setting it on the engine object instead of trying to muck about with the cookies manually. 

For an example see:

http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/WEB-INF/localization/Localization.page?view=markup

Notice the inputLocale component setting the value binding to be "page.engine.locale" . This is what sets it. A running example of it can be found here:

http://opencomponentry.com:8080/workbench/Home,$Border.pageLink.sdirect?sp=Slocalization%2FLocalization

> If a RedirectException is thrown after IEngine.setLocale(...) has been called, the cookie org.apache.tapestry.locale is not being set
> -------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: TAPESTRY-399
>                 URL: https://issues.apache.org/jira/browse/TAPESTRY-399
>             Project: Tapestry
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: 4.1.2
>            Reporter: Jonas Maurus
>         Assigned To: Jesse Kuhnert
>             Fix For: 4.1.2
>
>
> At the moment it seems not to be possible to change the engine locale and redirect to the current page so the locale settings take effect immediatly. As you can see I tried doing the redirect manually (via .forward()), but that didn't change a thing.
> WORK AROUND -------------------------
>   Work-around (this seems to work in Beta 2):
>     @InjectObject("infrastructure:cookieSource")
>     public abstract CookieSource getCookieSource();
>   then in the listener do:
>     // note that Locale.toString() returns the programmatic code of the locale (for example "de_DE" or "en_US")
>     getCookieSource().writeCookieValue("org.apache.tapestry.locale", Locale.GERMANY.toString());
>     throw new RedirectException([myurl]);
> TEST CODE -------------------------
> template:
>     <a jwcid="@ActionLink" stateful="false" listener="ognl:listeners.changeToGerman">de</a>
> listener:
>     public void changeToGerman(IRequestCycle cycle) {
>         cycle.getEngine().setLocale(Locale.GERMANY);
>         // this also does not send the cookie
>         // cycle.getInfrastructure().getRequest().forward(getEngineService().getLink(cycle, cycle.getPage().getPageName()).getAbsoluteURL());
>         throw new RedirectException(getEngineService().getLink(cycle, cycle.getPage().getPageName()).getURL());
>     }
>     @InjectObject("engine-service:page")
>     public abstract IEngineService getEngineService();
> Header dump:
> actual response:
> HTTP/1.x 302 Moved Temporarily
> Server: Apache-Coyote/1.1
> Location: http://localhost:81/cip/Home.cip
> Content-Length: 0
> Date: Thu, 14 Jul 2005 14:04:57 GMT
> expected response:
> HTTP/1.x 302 Moved Temporarily
> Server: Apache-Coyote/1.1
> Location: http://localhost:81/cip/Home.cip
> Content-Length: 0
> Date: Thu, 14 Jul 2005 14:04:57 GMT
> Set-Cookie: org.apache.tapestry.locale=de_DE; Path=/cip

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org