【发布时间】:2016-12-22 00:25:09
【问题描述】:
我配置了应用程序并将“DispatcherServlet”编码为 viewResolver,如下所示:
@Configuration
@EnableWebMvc
@ComponentScan ({"controllers"})
@EnableAutoConfiguration
@SpringBootApplication
public class Application {
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
public static void main(String[] args){
SpringApplication.run(Application.class, args);
}
}
处理请求的控制器类如下所示:
@Controller
public class HelloControllerImpl {
@RequestMapping(value= "/welcome", method= RequestMethod.GET)
public String getWelcomePage(ModelMap model) {
model.addAttribute("message", "Spring 3 MVC - Hello World");
model.addAttribute("name", "vzateychuk");
return "welcome";
}
}
视图文件:\WEB-INF\views\welcome.jsp
<html>
<body>
<h1>Hello, : ${name}</h1>
<h2>Message : ${message}</h2>
</body>
</html>
应用结构: Welcome application structure
我认为配置文件中缺少某些内容,但我看不到。你能不能客串一下有什么问题,什么意思:“没有为带有 URI [/WEB-INF/views/welcome.jsp] 的 HTTP 请求找到映射”? 我应该提供像 dispatcher-servlet.xml 之类的 xml 配置文件吗? 提前谢谢你。
更新:我猜我的 DispatcherServlet 找不到合适的视图。我试图完全删除 /WEB-INF 目录,但没有任何变化。这段代码可能有问题:
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
**viewResolver.setPrefix("/WEB-INF/views/");**
.... 谁能猜出什么是错的? (可能是注释@EnableAutoConfiguration 不允许定义viewResolver 的前缀?
【问题讨论】:
-
您是否向
/WEB-INF/views/welcome.tmpl端点发送了请求?您应该将请求发送到/welcome端点 -
阿里,我正在尝试请求端点:localhost:8080/welcome
-
检查你在@ComponentScan中扫描了正确的包
-
扫描包是控制器,所以没有实际线索
-
你的项目结构是什么?你能提供你的welcome.jsp 文件的位置吗?
标签: java spring spring-mvc requestdispatcher