我是struts2和tiles2的新手,我有一个应用程序,我使用struts2作为mvc框架,使用tiles2作为视图组件。 在我的应用程序中,我使用2种语言英语和马拉地语各自的语言环境是en_US和mr_IN 我有tiles.xml和tiles_mr_IN.xml 当我从浏览器切换语言环境时,代码工作正常 但我想在英语和马拉地语之间切换,用户应该被重定向到具有相同请求参数的相同操作。 我试过satting request_locale参数,但它没有用。 我可以发现,如果我可以在请求标头中切换区域设置或将区域设置从struts2传递到tiles lisner或类似的东西 请帮忙
答案 0 :(得分:1)
这个问题应该可以解决几个s2 jsp标签。
此链接显示了您需要的部分内容:http://struts.apache.org/2.0.14/docs/how-do-we-change-locales.html
这就是它显示了如何使用s2 url添加参数,然后使用它来设置区域设置。
如果i18n拦截器中有一个名为“request_locale”的参数将使用该参数而不是用户代理语言首选项。
使示例更适合模板更改
<s:url id="en" action="Welcome">
到
<s:url includeParams="get">
注意操作名称已被省略,这将默认为当前操作(这是您的模板的理想选择),然后includeParams =“get”将所有参数添加回url,以便它们将被传递到使用锚点时的操作。 includeParams可以是“none”,“get”或“all”(做你期望的事情)。有关s2 url标记的详细信息,请参阅:http://struts.apache.org/2.2.1.1/docs/url.html
进一步注意,s2 a标签与s2 url标签具有大部分相同的功能,利用它会产生:
<s:a includeParams="get">
<s:param name="request_locale" value="en_US"/>
English
</s:a>
<s:a includeParams="get">
<s:param name="request_locale" value="mr_IN"/>
Marathi
</s:a>