Нежелательный i18n в сообщении об ошибке Spring Security - PullRequest
1 голос
/ 03 мая 2011

У меня проблема с Spring Security 3 и, возможно, с i18n.Я использую Velocity для своих шаблонов представления, и у меня есть следующий код в одном из них:

#if($SPRING_SECURITY_LAST_EXCEPTION)
    <div class="error"><p>#springMessage($SPRING_SECURITY_LAST_EXCEPTION.message)</p></div>
#end

Когда пользователь попытался войти в систему и, например, передал неверные учетные данные, на странице должно появиться сообщение об ошибке.Проблема в том, что приложение пытается разрешить сообщение в локали 'pl', и я получаю следующее исключение:

org.springframework.context.NoSuchMessageException: No message found under code 'Bad credentials' for locale 'pl'.

В моих файлах конфигурации у меня нет информации о i18n, потому что мне просто не нужноЭто.Я заметил, что информацию о локали 'pl' можно получить из запроса (заголовок Accept-Language: pl,en-us;q=0.7,en;q=0.3).

Как это игнорировать и обслуживать страницы только на языке по умолчанию?

Ответы [ 2 ]

2 голосов
/ 03 мая 2011

Если вы не хотите i18n, не используйте #springMessage.$SPRING_SECURITY_LAST_EXCEPTION.message - это само сообщение, а не код сообщения, поэтому вам нужно вывести его как есть (хотя я не уверен насчет экранирования HTML в Velocity):

#if($SPRING_SECURITY_LAST_EXCEPTION)
    <div class="error"><p>${SPRING_SECURITY_LAST_EXCEPTION.message}</p></div>
#end 
0 голосов
/ 04 мая 2011

В прошлом я веселился с il8n. Что я делаю, это заставляю Spring использовать только язык по умолчанию, я сделал это с помощью FixedLocaleResolver в файлах конфигурации. Измените значение, на которое вы хотите установить по умолчанию.

<bean id="localeResolver" class="org.springframework.web.servlet.i18n.FixedLocaleResolver">
    <property name="defaultLocale" value="en_US" />
</bean> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...