Java Struts2定位拦截器
我试图创建一个拦截器,可以改变语言,但我不能改变它 相关拦截代码:Java Struts2定位拦截器,java,struts2,internationalization,interceptor,Java,Struts2,Internationalization,Interceptor,我试图创建一个拦截器,可以改变语言,但我不能改变它 相关拦截代码: public String intercept(ActionInvocation invocation) throws Exception { ActionMapping mapping = (ActionMapping) invocation .getInvocationContext() .get(ServletActionContext.ACTION_MAPPING)
public String intercept(ActionInvocation invocation) throws Exception {
ActionMapping mapping = (ActionMapping) invocation
.getInvocationContext()
.get(ServletActionContext.ACTION_MAPPING);
Map<String, Object> params = mapping.getParams();
if (params != null) {
Locale locale = (Locale) params.remove(LOCALE_PARAMETER);
if (locale != null) {
ActionContext.getContext().setLocale(locale);
}
}
return invocation.invoke();
}
publicstringintercept(ActionInvocation调用)引发异常{
ActionMapping=(ActionMapping)调用
.getInvocationContext()
.get(ServletActionContext.ACTION\u映射);
Map params=mapping.getParams();
如果(参数!=null){
语言环境=(语言环境)参数。删除(语言环境参数);
if(区域设置!=null){
ActionContext.getContext().setLocale(语言环境);
}
}
返回invocation.invoke();
}
struts.xml:
<package name="default" extends="struts-default" namespace="/">
<result-types>
<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
</result-types>
<interceptors>
<interceptor name="navigator"
class="it.apps.mca.web.interceptors.NavigatorInterceptor">
</interceptor>
<interceptor name="locale"
class="it.apps.mca.web.interceptors.internationalizations.LocaleInterceptor">
</interceptor>
<interceptor-stack name="customStack">
<interceptor-ref name="navigator" />
<interceptor-ref name="locale" />
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<action name="locale"
class="it.apps.mca.web.actions.internationalizations.LocaleAction">
<interceptor-ref name="customStack"></interceptor-ref>
<result name="success" type="redirect">
<param name="location">${target}</param>
<param name="parse">true</param>
</result>
</action>
<action name="login"
class="it.apps.mca.web.actions.authentication.LoginAction">
<result name="success" type="tiles">/welcome.tiles</result>
<result name="input">index.jsp</result>
<result name="error">index.jsp</result>
</action>
</package>
${target}
真的
/欢迎光临
index.jsp
index.jsp
我知道i18n拦截器已经存在。
我添加了一个执行重定向的拦截器。添加此拦截器后,我丢失了页面的位置。
如果通过操作执行重定向,也会发生同样的情况。你知道告诉我原因吗?拦截器已经存在: 它是defaultStack的一部分,因此您不必手动包含它
中的其他信息。我知道它已经存在。我添加了一个执行重定向的拦截器。添加此拦截器后,我丢失了页面的位置。如果通过操作执行重定向,也会发生同样的情况。你知道告诉我原因吗?这不在你的拦截代码中(可能是因为它不相关);顺便说一句,为什么你需要一个拦截器来做一些已经存在的事情?如果现有的重定向已经在没有重定向的情况下处理了,为什么还需要重定向?