Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java springboot中@RequestMapping和Locale之间的关系是什么?_Java_Spring_Spring Boot_Spring Mvc_Annotations - Fatal编程技术网

Java springboot中@RequestMapping和Locale之间的关系是什么?

Java springboot中@RequestMapping和Locale之间的关系是什么?,java,spring,spring-boot,spring-mvc,annotations,Java,Spring,Spring Boot,Spring Mvc,Annotations,如果我的理解正确,您可以自由添加/删除saveEmployee()的参数。例如,当您按如下方式添加“loc”时,saveEmployee()会在事件发生时接收“non-null对象”。查询参数也是如此 @控制器 公营雇员{ @请求映射(“/save”) 公共无效保存员工(区域设置loc, @RequestParam映射查询参数){ //拯救员工 } } 这个方法如何通过在这里添加一个参数“loc”来接收非空的语言环境对象? 我想知道这背后的逻辑。Spring的DispatcherServlet

如果我的理解正确,您可以自由添加/删除saveEmployee()的参数。例如,当您按如下方式添加“loc”时,saveEmployee()会在事件发生时接收“non-null对象”。查询参数也是如此

@控制器
公营雇员{
@请求映射(“/save”)
公共无效保存员工(区域设置loc,
@RequestParam映射查询参数){
//拯救员工
}
}
这个方法如何通过在这里添加一个参数“loc”来接收非空的语言环境对象?
我想知道这背后的逻辑。

Spring的DispatcherServlet将请求从客户端转发到控制器,并为您提供这些参数。为此,它从bean(Controller)所属的ApplicationContext中搜索对象。

Spring通过使用
LocaleResolver
LocaleContextResolver
搜索当前请求区域设置,该区域设置实际上由最具体的可用区域设置解析程序确定,在MVC环境中配置的
LocaleResolver/LocaleContextResolver

@RequestMapping处理程序方法可以具有非常灵活的签名。支持的方法参数和返回值将在下一节中介绍。大多数参数都可以按任意顺序使用,BindingResult参数除外

当前请求区域设置的java.util.Locale,由可用的最特定的区域设置解析程序确定,实际上是MVC环境中配置的LocaleResolver/LocaleEconTextResolver


Spring查看方法参数、它们的类型和注释,然后确定它是否可以提供该类型/注释的对象

如果不能,它将抛出一个异常,否则它将使用它确定的适合类型/注释的对象调用该方法

有关支持的类型/批注的列表,请阅读文档:


正如您所看到的,
java.util.Locale
已列出。

我认为您需要为您的语言环境设置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>