定义默认语言环境并处理Spring Locale Interceptor的异常

如果用户设置 ,是否可以定义应该加载的默认语言环境 ?

在我的spring-servlet.xml中,我有:

<bean id="localeChangeInterceptor"

class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">

<property name="paramName" value="lang" />

</bean>

<bean id="localeResolver"

class="org.springframework.web.servlet.i18n.CookieLocaleResolver">

<property name="defaultLocale" value="pt" />

</bean>

另外,如果我在URL参数中指定无效字符(如?lang = p @ t),spring会引发应处理的异常,我将如何处理?

Error 500: org.springframework.web.util.NestedServletException: Request processing failed&#59; nested exception is java.lang.IllegalArgumentException: Locale part &quot;&#39;&quot; contains invalid characters

回答:

我设法解决了这些问题。

关于默认语言环境,只要资源包中存在默认的.properties文件,spring就会在内部解决该问题。

因此,在我的情况下,必须有一个xxx_pt.properties xxx_en.properties和一个xxx.properties。

对于异常处理,我实际上不得不重写LocaleChangeInterceptor类的preHandle方法并捕获异常:

<bean id="localeChangeInterceptor"

class="com.xxx.xxx.LanguageExceptionHandler">

<property name="paramName" value="lang" />

</bean>

public class LanguageExceptionHandler extends LocaleChangeInterceptor {

@Override

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {

try {

super.preHandle(request, response, handler);

} catch (ServletException e) {

DebugLogger.writeError("ServletException", e);

} catch (IllegalArgumentException e) {

DebugLogger.writeError("IllegalArgumentException", e);

}

return true;

}

}

根据尽管本,无效字符应区别在spring的新版本处理。

以上是 定义默认语言环境并处理Spring Locale Interceptor的异常 的全部内容, 来源链接: utcz.com/qa/427565.html

回到顶部