2014-07-16 5 views
5

Ist es möglich, ein Standardgebietsschema zu definieren, das geladen werden sollte, wenn der Benutzer ? Lang = unknownlang einstellt?Standardgebietsschema definieren und Ausnahmen für Spring Locale Interceptor behandeln

In meiner Feder-servlet.xml ich habe:

<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> 

Auch wenn ich wie ungültige Zeichen in meiner URL param angeben lang = p @ t, wirft Feder eine Ausnahme, die behandelt werden sollten, wie würde Ich gehe das an?

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 

Antwort

0

Ich habe es geschafft, diese Probleme zu lösen.

In Bezug auf das Standardgebietsschema wird spring das intern lösen, solange eine Standarddatei .properties im Ressourcenpaket vorhanden ist.

Also in meinem Fall müsste eine xxx_pt.properties xxx_en.properties und eine xxx.properties sein.

Für die Ausnahmebehandlung hatte ich eigentlich die preHandle Methode der LocaleChangeInterceptor Klasse außer Kraft zu setzen und die Ausnahme abfangen:

feder servlet.xml

<bean id="localeChangeInterceptor" 
    class="com.xxx.xxx.LanguageExceptionHandler"> 
    <property name="paramName" value="lang" /> 
</bean> 

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; 
    } 
} 

Obwohl nach t o this, ungültige Zeichen sollten in neueren Versionen von Spring anders behandelt werden.

+1

ich habe Datei wie messages.properties, messages_en-IN.properties und messages_de-HI.properties ... wo sollte ich schreiben und LanguageExceptionHandler Code ausführen? Ich benutze Spring mit XML (nicht Java-Konfiguration) Ich habe Fehler als "java.lang.IllegalArgumentException: Locale Teil" En-IN "" – swapyonubuntu

Verwandte Themen