首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Spring和Intellj时无法解析MVC视图

使用Spring和Intellj时无法解析MVC视图
EN

Stack Overflow用户
提问于 2016-10-13 21:46:55
回答 3查看 6K关注 0票数 1

有一个令人困惑的问题,可能完全是由于缺乏使用Spring和/或Intellj的经验,但在整个互联网上搜索了一大堆之后,在如何解决上没有运气,所以这里就是这样。

简而言之,我有一个示例应用程序,我正在开发该应用程序以获得一些Spring/Hibernate/Maven的经验。它工作得很好(如预期的那样加载页面,等等),但是在代码中,我有大量的标志表明IDE不能解析MVC视图,我不明白为什么会出现这种情况。

设置是web.xmlless,使用完全的Java设置,使用如下的侦听器配置。

代码语言:javascript
运行
复制
@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视图

代码语言:javascript
运行
复制
@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";
    }

其中userslist是未找到的违规视图。

虽然我相当确定它不是一个缺失的Spring插件,但pom.xml有以下spring组件,使用版本4.2.5

代码语言:javascript
运行
复制
<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。

EN

回答 3

Stack Overflow用户

发布于 2016-10-13 22:08:51

可能的解决方案(因为屏幕截图,我不得不写一个答案):你没有为你的模块配置facet。打开Project Structure对话框,转到左侧的Modules条目,并将Spring facet添加到其中。如果你这样做了,你可以添加你的弹簧配置。

Idea应该已经通知您有未注册的Spring配置(如下所示)

票数 2
EN

Stack Overflow用户

发布于 2020-08-06 01:03:28

在这上面花了大约4个小时后,我发现这是一个Intellij bug,报告为here

解决方法是按如下方式配置视图解析器:

代码语言:javascript
运行
复制
public void configureViewResolvers(ViewResolverRegistry registry) {
    registry.jsp("/WEB-INF/pages/", ".jsp");
}
票数 2
EN

Stack Overflow用户

发布于 2016-11-09 17:07:22

我认为这个问题的发生是因为Itellij不能正确识别ViewResolver Bean。尝试将viewResolver的配置更改为如下所示:

代码语言:javascript
运行
复制
@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/");
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40022839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档