2012-05-07 2 views
0

Мой текущий проект требует индивидуальной «Системной даты», что означает системную дату и формат, определенный в файле свойств i18n. Но класс, связанный с ним, является общим классом полезности, но не внутри веб-уровня. Однако локаль (для разработки формата даты) необходимо извлечь из объекта HttpServletRequest. Я думаю, autwire экземпляр HttpServletRequest для этого класса утилиты. Кажется, это нарушает дизайн, но я думаю, что это пиратский. Однако это не сработает. Итак, что не так с этим, и есть ли лучший способ решить Locale в любых других слоях весной?Autowire HttpServletRequest? Чтобы решить Locale?

Заранее спасибо.

ответ

2

Не было бы намного более элегантным просто перегружать полезный класс, чтобы принять параметр Locale в качестве параметра для затронутых методов. Затем вы можете получить локаль в своем контроллере и передать ее утилите.

+0

Благодарим за быстрый ответ. Проблема здесь в том, что системная дата не извлекается из явного «запроса», она должна отображаться на индексной странице, когда пользователь набирает URL-адрес веб-приложения в браузере. Я знаю, что мы можем создать контроллер на основе любого шаблона url, но можем ли мы иметь явный экземпляр HttpServletRequest из запроса «/»? Спасибо. – Dreamer

0

Я предпочитаю использовать SessionLocaleResolver Spring Framework. Он изменит и сохранит языковой стандарт в сеансе, и, следовательно, вы сможете получить его в любой точке кода в приложении.

Пожалуйста, обратитесь к приведенной ниже конфигурации для того же самого. А также прочитайте «Весеннюю документацию» для того же самого для лучшего понимания.

<mvc:interceptors> 
     <ref bean="localeChangeInterceptor"/> 
    </mvc:interceptors> 

    <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.SessionLocaleResolver"> 
     <property name="defaultLocale" value="en"/> 
    </bean> 

    <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 
     <property name="basenames"> 
     <list> 
      <value>/WEB-INF/i18n/labels</value> 
      <value>/WEB-INF/i18n/messages</value> 
     </list> 
     </property> 
     <property name="defaultEncoding" value="UTF-8"/> 
    </bean> 

Надеюсь, это вам поможет. Приветствия.