【问题标题】:Spring View Resolver returning 404Spring View 解析器返回 404
【发布时间】:2016-10-19 16:43:00
【问题描述】:

我很困惑为什么我会在这个新项目中遇到问题。 只要控制器返回一个定义 jsp 文件名称的字符串,只需尝试确保 Spring 在特定目录中返回具有特定名称的 jsp 文件。

@Controller
public class TestController {

    @RequestMapping("/test")
    public String test2(HttpServletResponse response, HttpServletRequest request) {
        System.out.println("Returning test.jsp");
        return "test";
    }

}

还有视图解析器...

@Bean
public InternalResourceViewResolver viewResolver() {
    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
    viewResolver.setViewClass(JstlView.class);
    viewResolver.setPrefix("/WEB-INF/views/");
    viewResolver.setSuffix(".jsp");
    return viewResolver;
}

在这种情况下,我希望 domain.com/test 上的控制器显示“src/main/webapp/WEB-INF/views/test.jsp”。这似乎在我所有的旧项目上都运行良好,但是在配置这个项目时,它不会合作,我不断收到 404 错误。

任何想法为什么它找不到正确的 jsp 文件来显示?

编辑:问题已解决,解决方案发布在下方。

【问题讨论】:

  • 您的视图解析器配置看起来不错。确定控制器被调用了吗? System.out.println("Returning test.jsp"); 是否打印任何内容?还要确保您可能的 war 文件包含视图。
  • 打印肯定在发生,所以它不可能是控制器被调用。不要认为war文件应该有所作为,因为我只是通过eclipse启动并且文件存在。

标签: java spring jsp spring-mvc


【解决方案1】:

您是否在 spring 配置中注册了您的控制器?(@ComponentScan<context:component-scan .../>

【讨论】:

  • 老实说,以前从来没有这样做过,而且在过去没有它的情况下它一直运行良好。控制器被调用,所以这不应该是问题。
  • 您还可以在 web.xml 或 WebApplicationInitializer 中检查调度程序映射
【解决方案2】:

解决了这个问题。 不出所料,这很愚蠢。

问题归结为 pom.xml 中不存在 Apache Tomcat 依赖项。 供将来参考:

    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>

【讨论】:

    猜你喜欢
    • 2015-08-16
    • 2021-04-23
    • 1970-01-01
    • 2019-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-24
    • 2017-05-24
    相关资源
    最近更新 更多