2017-03-21 23 views
0

我有这样的方法:Spring MVC的@RequestParam默认值没有解决

@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。

我错过了一个这里,我不明白为什么默认值不会给出?

回答

0

看来我有环境问题,其他服务也有默认值,但没有提供。

过了一段时间,似乎一切恢复正常,再次工作。

这个问题也可以删除,因为它没有提供给读者具体的东西。

0

我认为“价值”属性丢失。这个值表示请求参数的时名称:

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

我会试一试,但我虽然如果没有指定,它采用了变量的名称? –

+0

在这种情况下没有改变任何东西。 –