Spring Boot - 单击更改区域设置

QoP*_*QoP 4 spring spring-boot

我正在将 SpringBoot 用于我的 Web 应用程序,我想将 2 个按钮绑定到 2 种不同的语言,但我不知道如何正确操作。

我试图这样做,但它不起作用。

@RequestMapping("/language")
public class LanguageController {

    @RequestMapping("esp")
    public String setEsp(SessionLocaleResolver session)
    {
        Locale esp = new Locale("es_ES" );
        session.setDefaultLocale(esp);
        return "index";
    }

    @RequestMapping("eng")
    public String setEng(SessionLocaleResolver session)
    {
        session.setDefaultLocale(Locale.ENGLISH);
        return "index";
    }
}
Run Code Online (Sandbox Code Playgroud)

Fri*_*rdt 5

您当前的设置中有几个错误

  1. SessionLocaleResolver支持的处理方法参数-因此你目前的代码会导致一个NullpointerException调用任何的处理方法时。为了访问SessionLocaleResolver你必须在你的 Spring Boot 中设置它Application.java
  2. 一旦SessionLocaleResolver可以自动连接到您的控制器中,您应该调用setLocale而不是setDefaultLocale并且事情应该开始工作。
  3. 由于更改Locale是一个常见用例,因此 Spring 提供了LocaleChangeInterceptor消除对自定义逻辑的需求并保持您的处理程序方法干净。

例如如何在 Spring Boot 中设置它的代码检查这个