使用Spring和Intellj

时间:2016-10-13 13:46:55

标签: java spring maven spring-mvc intellij-idea

有一个令人困惑的问题,可能完全是由于对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。

3 个答案:

答案 0 :(得分:2)

可能的解决方案(由于屏幕截图,我必须写一个答案): 您没有为模块配置构面。 打开“项目结构”对话框 转到左侧的Modules条目并将Spring facet添加到它。 如果您已完成此操作,则可以添加弹簧配置。 project structure dialog

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/");
    }
}