某些请求的Spring MVC 404错误

时间:2015-09-14 14:08:24

标签: java spring spring-mvc spring-boot

我在Spring Boot Web应用程序中访问特定页面时收到404错误。

奇怪的是,当资源映射到不同的位置时,我没有收到该错误。

@RequestMapping(value="report", method = RequestMethod.GET)
public String getReportPage() {
    return "templates/report.html";
}

工作正常

@RequestMapping(value="report/{uuid}", method = RequestMethod.GET)
public String getReportPage() {
    return "templates/report.html";
}

没有。我需要我的角度服务的uuid参数,所以我不能简单地从路径中删除它。我尝试将路径变量添加到模型中;没有区别。

目录结构设置如下:

webapp
    resources
        ...
    templates
        report.html

配置几乎是一个开箱即用的弹簧启动,带有一些额外的资源处理程序和一些基本的安全性:

@Configuration
public class MvcConfiguration extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(final ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**")
                .addResourceLocations("/resources/", "file:resources/");
    }
}
@Configuration
@EnableWebSecurity
class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.httpBasic().and()
                .csrf().disable();
    }
}
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
class AuthenticationConfiguration extends GlobalAuthenticationConfigurerAdapter {

    @Override
    public void init(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService());
        auth.authenticationProvider(authProvider());
    }
    .... custom user details service and authentication provider ...
}

关于可能导致此问题的任何想法?

编辑:经过一些进一步的调查后,看起来任何超出第一级的映射都不适用于Web控制器(但其余的控制器工作得很好)。例如,带有值/ web / report的映射也不起作用。

1 个答案:

答案 0 :(得分:0)

在查看调试消息时,我发现应用程序正在寻找错误位置的页面:

DEBUG : Looking up handler method for path /report/templates/report.html

这就是为什么只有顶级请求才有效。

更改映射:

@RequestMapping(value="report/{uuid}", method = RequestMethod.GET)
public String getReportPage() {
    return "/templates/report.html";
}

修复了问题。