📜  见鬼你的 ViewResolver 设置! (提示:由于默认视图名称生成,这可能是未指定视图的结果.) (1)

📅  最后修改于: 2023-12-03 14:57:21.919000             🧑  作者: Mango

见鬼你的 ViewResolver 设置!

在 Spring MVC 中,ViewResolver 是负责将逻辑视图名称映射为实际视图对象的组件。默认情况下,Spring 使用 InternalResourceViewResolver 作为 ViewResolver 来解析视图。

如果你遇到了类似于“见鬼你的 ViewResolver 设置”的错误提示,可能是由于默认视图名称生成而导致的。默认情况下,如果在 Controller 中未指定视图名称,则会使用 RequestToViewNameTranslator 来自动生成一个视图名称。但是,如果该视图名称无法映射到任何实际的视图对象,就会导致这个错误的提示。

为了解决这个问题,有几种方法可以尝试:

  1. 在 Controller 中指定一个合法的视图名称,以确保能够正确地映射到实际的视图对象。

  2. 在 ViewResolver 中配置一个合适的前缀和后缀,以确保能够正确地解析视图名称。例如,配置前缀为 "/WEB-INF/views/",后缀为 ".jsp",则视图名称 "home" 将被解析为 "/WEB-INF/views/home.jsp"。

  3. 检查项目中的视图文件是否存在,如果不存在则创建相应的文件。

示例代码片段:

@Controller
public class HomeController {

    @RequestMapping("/")
    public String home(Model model) {
        model.addAttribute("message", "Hello World!");
        return "home"; // 视图名称为 "home"
    }
}

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        registry.jsp("/WEB-INF/views/", ".jsp"); // 配置 JSP 视图解析器
    }
}

在上述代码中,HomeController 中的 home 方法指定了视图名称为 "home",WebConfig 中的 configureViewResolvers 方法配置了 JSP 视图解析器。如果项目中存在名为 "/WEB-INF/views/home.jsp" 的 JSP 文件,则该视图名称将被解析为该文件。否则,将会出现类似于“见鬼你的 ViewResolver 设置”的错误提示。