當用戶首次單擊鏈接到我的主頁時,如果鏈接包含?langId = fr_FR,頁面將以法語顯示;到現在爲止還挺好。如果用戶嘗試登錄失敗,則會以法文顯示錯誤消息,這是完美的。問題是如果第二次失敗嘗試登錄。在這種情況下,頁面語言默認爲英語。如何在後續失敗的登錄嘗試中保留主頁i18n
我不知道如何在上面的情況下保留法語頁面(即當初始url包含langId = fr_FR時的任何後續請求)。我應該使用CookieLocaleResolver而不是SessionLocaleResolver嗎?
該網站使用Spring Security,我已經實現了一個在Spring Security過濾器之前運行的過濾器。此過濾器將使用langId請求參數設置LocaleContextHolder。這對初次登錄嘗試很有幫助。任何其他請求,我失去了langId參數。
有什麼我可以在loadByUserName()方法中做什麼,這將允許我堅持原始langId?
下面是解析器和攔截
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" >
<property name="defaultLocale" value="en" />
</bean>
<mvc:interceptors>
<bean id="localeChangeInterceptor"
class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="langId" />
</bean>
</mvc:interceptors>
編輯
使用CookieLocaleResolver的,而不是一個SessionLocaleResolver不解決此問題的配置。但是,如果用戶禁用cookies,那麼我就回到原點了。我希望找到一種方法來在用戶多次登錄時保持頁面爲法文。任何幫助真的很感謝謝謝!
有趣。目前,我們只是使用 標籤。其中,只會將用戶轉到logon.html頁面。所以,使用你的解決方案,我必須確保頁面請求通過一個控制器。我理解正確嗎? –
Carl
對不起,我很快回應,並不明白你在說什麼。我會考慮將langId添加到登錄表單的操作中。謝謝! – Carl