2017-06-06 148 views
1

我想啓用以下傑克遜映射功能: MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES如何使用Spring application.properties定製Jackson ObjectMapper?

根據https://docs.spring.io/spring-boot/docs/current/reference/html/howto-spring-mvc.html

可在application.properties配置如下: spring.jackson.mapper.accept_case_insensitive_properties=true

但是:

@RestController 
public class MyServlet { 
    @RequestMapping("/test") 
    public void test(@Valid TestReq req) { 

    } 
} 

public class TestReq { 
    @NotBlank 
    private String name; 
} 

用法:

localhost:8080/test?name=test //works 
localhost:8080/test?Name=test //fails with 'name may not be blank' 

因此,不考慮不區分大小寫的屬性。但爲什麼?

順便說一句:即使使用Jackson2ObjectMapperBuilderCustomizer明確不起作用:

@Bean 
public Jackson2ObjectMapperBuilderCustomizer initJackson() { 
    Jackson2ObjectMapperBuilderCustomizer c = new Jackson2ObjectMapperBuilderCustomizer() { 
     @Override 
     public void customize(Jackson2ObjectMapperBuilder builder) { 
      builder.featuresToEnable(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES); 
     } 
    }; 

    return c; 
} 

彈簧引導1.5.3.RELEASE

+0

你在哪裏創建ObjectMapper實例,在java類文件中還是在spring配置中? – Richard

+0

它由'spring-boot'或'spring-mvc'自動創建,因此應該在初始化期間使用配置屬性。 – membersound

+0

我認爲你需要改變你的標籤來添加spring-boot – Richard

回答

1

答案很簡單:這是不可能的。

Jackson2ObjectMapperBuilderCustomizer僅影響JSON POST請求。它對get查詢綁定沒有影響。

相關問題