Spring Boot - 点击

时间:2015-07-06 13:49:02

标签: 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";
    }
}

2 个答案:

答案 0 :(得分:3)

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

  1. SessionLocaleResolver 支持的处理程序方法参数 - 因此当调用任何处理程序方法时,当前代码应该生成NullpointerException。要访问SessionLocaleResolver,您必须在Spring Boot Application.java中进行设置。
  2. SessionLocaleResolver自动连接到您的控制器后,您应该致电setLocale而不是setDefaultLocale,事情就应该开始了。
  3. 由于更改Locale是一个常见用例,因此Spring提供LocaleChangeInterceptor 消除了对自定义逻辑的需求并保持处理程序方法的清洁。
  4. 例如,如何在Spring Boot check this中设置它的代码。

答案 1 :(得分:1)

看一下LocaleChangeInterceptor(https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-localeresolver-interceptor

如果启用,只需将url参数locale=...添加到任何请求,然后将使用该区域设置。