Spring Boot中@RequestMapping和语言环境之间是什么关系?

问题描述 投票:0回答:3

如果我的理解是正确的,则可以自由地为saveEmployee()添加/删除参数。例如,当您按如下方式添加“ loc”时,事件发生时saveEmployee()会收到“非null对象”。对于queryParams也是如此。

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

仅通过在此处添加参数“ loc”,该方法将如何接收非null的Locale对象?我想知道其背后的逻辑。

java spring spring-boot spring-mvc annotations
3个回答
0
投票

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


0
投票

Spring通过使用LocaleResolverLocaleContextResolver为您完成,对于当前请求的语言环境,由可用的最特定的语言环境解析器确定,实际上是MVC环境中已配置的LocaleResolver / LocaleContextResolver] >

21.3.3 Defining @RequestMapping handler methods

@RequestMapping处理程序方法可以具有非常灵活的签名。下一节介绍了受支持的方法参数和返回值。

可以以任意顺序使用大多数参数,只有BindingResult参数除外。

Supported method argument types

当前请求语言环境的java.util.Locale,由可用的最特定的语言环境解析器确定,实际上是MVC环境中配置的LocaleResolver / LocaleContextResolver。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.