Java springboot中@RequestMapping和Locale之间的关系是什么?
如果我的理解正确,您可以自由添加/删除saveEmployee()的参数。例如,当您按如下方式添加“loc”时,saveEmployee()会在事件发生时接收“non-null对象”。查询参数也是如此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
@控制器
公营雇员{
@请求映射(“/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>