我在我的 wab 站点中使用 Spring-Mvc,用户可以在其中更改我的语言 项目运行良好,我只需要改进我的编码,但我不需要 对spring-mvc了解太多了
下面给出了我的 Controller 类的源代码
@Controller
public class ContentController {
@RequestMapping("/index")
public ModelAndView sriWap(){
Locale locale2 = LocaleContextHolder.getLocale();
String lang_name = locale2.getDisplayLanguage();
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("language",lang_name);
modelAndView.setViewName("sriWap");
return modelAndView;
}
@RequestMapping("/contentCat")
public ModelAndView content_cat_desc(){
Locale locale2 = LocaleContextHolder.getLocale();
String lang_name = locale2.getDisplayLanguage();
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("language",lang_name);
modelAndView.setViewName("content_cat_desc");
return modelAndView;
}
@RequestMapping("/content")
public ModelAndView content(){
Locale locale2 = LocaleContextHolder.getLocale();
String lang_name = locale2.getDisplayLanguage();
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("language",lang_name);
modelAndView.setViewName("content");
return modelAndView;
}
}
正如你所看到的,我在所有方法中编写相同的代码来获取 所选语言
Locale locale2 = LocaleContextHolder.getLocale();
String lang_name = locale2.getDisplayLanguage();
我不想在我想在上面编写的所有方法中编写上面的代码 仅编写一次代码,以便所有方法都可以使用 的值 '语言名称'
最佳答案
你的权利,在 Spring 有一个简单的方法,它可以防止 Controller 请求方法中的代码重复。您正在寻找有关方法的 @ModelAttribute
:http://docs.spring.io/autorepo/docs/spring/current/spring-framework-reference/html/mvc.html#mvc-ann-modelattrib-methods
因此,您必须将此代码重复提取到单个方法中,该方法用 @ModelAttribute
进行注释,如下所示:
@ModelAttribute("language")
public String getLocaleLanguage() {
Locale locale = LocaleContextHolder.getLocale();
return locale.getDisplayLanguage();
}
当其他@Controllers
也需要这种“语言”@ModelAttribute
时,您希望将其提取到@ControllerAdvice
关于java - 如何设置 Controller 类的变量名以便所有模型 View 都可以访问该变量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36785615/