📅  最后修改于: 2023-12-03 14:57:21.919000             🧑  作者: Mango
在 Spring MVC 中,ViewResolver 是负责将逻辑视图名称映射为实际视图对象的组件。默认情况下,Spring 使用 InternalResourceViewResolver 作为 ViewResolver 来解析视图。
如果你遇到了类似于“见鬼你的 ViewResolver 设置”的错误提示,可能是由于默认视图名称生成而导致的。默认情况下,如果在 Controller 中未指定视图名称,则会使用 RequestToViewNameTranslator 来自动生成一个视图名称。但是,如果该视图名称无法映射到任何实际的视图对象,就会导致这个错误的提示。
为了解决这个问题,有几种方法可以尝试:
在 Controller 中指定一个合法的视图名称,以确保能够正确地映射到实际的视图对象。
在 ViewResolver 中配置一个合适的前缀和后缀,以确保能够正确地解析视图名称。例如,配置前缀为 "/WEB-INF/views/",后缀为 ".jsp",则视图名称 "home" 将被解析为 "/WEB-INF/views/home.jsp"。
检查项目中的视图文件是否存在,如果不存在则创建相应的文件。
示例代码片段:
@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 设置”的错误提示。