Какова связь между @RequestMapping и Locale в Spring Boot? - PullRequest
0 голосов
/ 20 октября 2019

Если мое понимание верно, вы можете свободно добавлять / удалять параметры для saveEmployee (). Например, когда вы добавляете «loc» следующим образом, saveEmployee () получает «ненулевой объект», когда происходит событие. И то же самое относится и к queryParams.

@Controller
public class Employee {
  @RequestMapping("/save")
  public void saveEmployee(Locale loc, 
                           @RequestParam Map<String, String> queryParams) {
    // saving employee
  }
}

Как этот метод может получить ненулевой объект Locale, просто добавив сюда параметр "loc"? Я хотел бы знать логику этого.

Ответы [ 4 ]

0 голосов
/ 23 октября 2019

Я думаю, вам нужна настройка xml для вашей локали
Хотите попробовать следующие настройки xml

   <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="language" />
    </bean>
   </mvc:interceptors>
0 голосов
/ 20 октября 2019

Spring делает это за вас, используя LocaleResolver или LocaleContextResolver, для текущего языкового стандарта запроса, определяемого наиболее конкретным из доступных преобразователей языковых стандартов, по сути, настроенным LocaleResolver / LocaleContextResolver в среде MVC.

21.3.3 Определение методов обработчика @RequestMapping

Метод обработчика @RequestMapping может иметь очень гибкие сигнатуры. Поддерживаемые аргументы метода и возвращаемые значения описаны в следующем разделе. Большинство аргументов можно использовать в произвольном порядке с единственным исключением аргументов BindingResult.

Поддерживаемые типы аргументов метода

java.util.Locale для текущего языкового стандарта запроса, определяемого наиболее конкретным из доступных преобразователей языковых стандартов, по сути, настроенным LocaleResolver / LocaleContextResolver в среде MVC.

0 голосов
/ 20 октября 2019

Spring просматривает аргументы метода, их типы и аннотации, затем определяет, может ли он предоставить объект этого типа / аннотации.

Если это невозможно, он выдаст исключение, в противном случае он вызоветметод с выбранным объектом соответствует типу / аннотации.

Список поддерживаемых типов / аннотаций приведен в документации:
https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-ann-arguments

Как видите, java.util.Locale в списке.

0 голосов
/ 20 октября 2019

Spring DispatcherServlet, который перенаправляет запрос от клиента на ваш контроллер, дает вам эти параметры. Для этого он ищет объект из ApplicationContext, к которому принадлежит компонент (Controller).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...