Spring MVC @RequestParam默认值未解析

时间:2017-03-21 12:41:22

标签: rest spring-mvc spring-boot

我有这个方法:

@GetMapping(value = "warehouses/{warehouseId}/issues", headers = BOOTGRID_REQUEST)
public ResponseEntity<BootgridResponse<T>> listWarehouseIssues(
        @PathVariable final long warehouseId,
        @RequestParam(required = false, defaultValue = ISSUE_STATE_ALL) final String state,
        @Valid @ModelAttribute final BootgridRequest request,
        final BindingResult bindingResult
)

在所有情况下都工作得很好,直到我注册了一个将请求包装到包装器中的新过滤器。

@Bean
public FilterRegistrationBean someFilterRegistration() {
    FilterRegistrationBean registration = new FilterRegistrationBean();
    registration.setFilter(crossScriptingFilter());
    registration.addUrlPatterns("/*");
    registration.setName("XFilter");
    registration.setOrder(1);

    return registration;
}

@Bean
public Filter crossScriptingFilter() {
    return new CrossScriptingFilter();
}

因为,当请求参数中没有指定时,参数“state”被赋予null。

当我删除过滤器注册时,我得到默认值而不是null。

我在这里遗漏了一块,我不明白为什么不给出默认值?

2 个答案:

答案 0 :(得分:0)

我认为缺少“价值”属性。此值表示请求参数的名称:

@RequestParam(value = "state", required = false, defaultValue = ISSUE_STATE_ALL) final String state

答案 1 :(得分:0)

我似乎遇到了环境问题,其他服务也有默认值,但已提供。

过了一会儿,似乎所有人都恢复正常并再次工作。

这个问题也可以删除,因为它没有为读者提供任何具体内容。