java - 如何设置 Controller 类的变量名以便所有模型 View 都可以访问该变量值?

标签 java spring spring-mvc model-view-controller local

我在我的 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/

相关文章:

java - 使用 WebDriverManager 时如何设置 Chrome 选项?

java - 使用 RestTemplate 的 Spring Security 身份验证

spring - 在 spring boot 启动时在 postgres 中创建一个模式

java - PostgreSQL:列 "BOOLEAN_VALUE"是数字类型,但表达式是 boolean 类型提示:您需要重写或强制转换表达式

java - OpenCV:在没有校准图像的情况下估计径向失真

java - 我在 jar 文件中找不到我的库

java - MySQL jdbc 连接时间过长

java - 用于自定义 Servlet 的 Spring Boot Actuator

Spring MVC jackson消息转换器日期格式不起作用,总是返回长时间戳

java - Maven webapp 原型(prototype)中的 javascript 文件在哪里?