在Spring Controller中获取语言环境的优雅方法[重复]

我正在寻找一种更干净的方法(在Spring3.2中)来获取当前语言环境,而不是在每个Controller方法的开始处显式调用LocaleContextHolder.getLocale()。它必须与Java注释兼容,因为我没有使用XML配置。这是我目前正在做的事情。

@Controller

public class WifeController {

@Autowired

private MessageSource msgSrc;

@RequestMapping(value = "/wife/mood")

public String readWife(Model model, @RequestParam("whatImDoing") String iAm) {

Locale loc = LocaleContextHolder.getLocale();

if(iAm.equals("playingXbox")) {

model.addAttribute( "statusTitle", msgSrc.getMessage("mood.angry", null, loc) );

model.addAttribute( "statusDetail", msgSrc.getMessage("mood.angry.xboxdiatribe", null, loc) );

}

return "moodResult";

}

}

回答:

在Spring 3.2参考文档的 17.3.3节,支持的方法参数类型中:

以下是受支持的方法参数:

  • 请求或响应对象(Servlet API)。选择任何特定的请求或响应类型,例如ServletRequest或HttpServletRequest。

(…)

  • ,由最特定的可用语言环境解析器确定,实际上是Servlet环境中配置的LocaleResolver。

因此,您需要做的就是Locale在每个方法中都将的实例作为参数接收:

@RequestMapping(value = "/wife/mood")

public String readWife(Model model, @RequestParam("whatImDoing") String iAm, Locale loc) {

if (iAm.equals("playingXbox")) {

model.addAttribute("statusTitle", msgSrc.getMessage("mood.angry", null, loc));

model.addAttribute("statusDetail", msgSrc.getMessage("mood.angry.xboxdiatribe", null, loc));

}

return "moodResult";

}

以上是 在Spring Controller中获取语言环境的优雅方法[重复] 的全部内容, 来源链接: utcz.com/qa/430250.html

回到顶部