有一个令人困惑的问题,可能完全是由于对Spring和/或Intellj都没有经验,但是在搜索了整个互联网和SO以及很多东西后,没有运气如何修复,所以这里就是。
简而言之,我有一个示例应用程序,我正在努力获得一些Spring / Hibernate / Maven的经验。它运行正常(按预期加载页面等等),但在代码中,我有大量的标志,IDE无法解析MVC视图,我无法看到为什么会出现这种情况
该设置是web.xmlless,使用完全Java设置,具有以下监听器配置。
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".jsp");
registry.viewResolver(viewResolver);
}
这里是一个代码示例,它标记它无法解析MVC视图
@RequestMapping(value = { "/", "/list" }, method = RequestMethod.GET)
public String listUsers(ModelMap model) {
List<User> users = userService.findAllUsers();
model.addAttribute("users", users);
model.addAttribute("loggedinuser", getPrincipal());
return "userslist";
}
用户列表是未找到的违规视图。
虽然我很确定它不是一个缺少的Spring插件,但pom.xml有以下spring组件,使用版本4.2.5
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${springframework.version}</version>
</dependency>
还使用已注册的最新版IntellJ,2016.2.4。
答案 0 :(得分:2)
可能的解决方案(由于屏幕截图,我必须写一个答案): 您没有为模块配置构面。 打开“项目结构”对话框 转到左侧的Modules条目并将Spring facet添加到它。 如果您已完成此操作,则可以添加弹簧配置。
Idea应该通知您有未注册的Spring配置(类似这样)
答案 1 :(得分:1)
在花费了大约4个小时的时间后,我发现这是一个Intellij错误,报告为here。
解决方法是像这样配置视图解析器:
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp("/WEB-INF/pages/", ".jsp");
}
答案 2 :(得分:0)
我认为发生此问题是因为Itellij无法正确识别ViewResolver Bean。尝试将viewResolver的配置更改为以下内容:
@Configuration
@EnableWebMvc
@ComponentScan("com.app")
public class WebConfig extends WebMvcConfigurerAdapter{
@Bean
public InternalResourceViewResolver resolver(){
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
return resolver;
}
public void configureDefaultServerletHandling(DefaultServletHandlerConfigurer configurer){
configurer.enable();
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry){
registry
.addResourceHandler("/resources/**")
.addResourceLocations("/resources/");
}
}