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

是否可以定义应该加载的默认语言环境,以防用户设置?lang = unknownlang

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

      

另外如果我在我的url param中指定了无效字符,例如?lang = p @ t,spring会抛出一个应该处理的exception,我该如何处理呢?

 Error 500: org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalArgumentException: Locale part "'" contains invalid characters 

我设法解决了这些问题。

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

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

对于exception处理,我实际上必须覆盖LocaleChangeInterceptor类的preHandle方法并捕获exception:

为spring-servlet.xml

    

LanguageExceptionHandler.java

 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中应该以不同的方式处理无效字符。