@JsonFilter бросает "JsonMappingException: Can not resolve BeanPropertyFilter"

Можно ли выборочно определить, когда аннотация @JsonFilter используется во время выполнения?

Я получаю исключение JsonMappingException (см. ниже), когда не предоставляю фильтр.

Предыстория:

Из недавнего сообщения на StackOverflow я узнал, что могу использовать @JsonFilter для динамической фильтрации сериализуемых свойств bean. Это отлично работает. После добавления @JsonFilter("apiFilter") в мой класс домена и добавления этого кода в мой jax-rs сервис (использующий реализацию CXF), я могу динамически фильтровать свойства, возвращаемые моим RESTful API:

// shortened for brevity
FilterProvider filters = new SimpleFilterProvider().addFilter("apiFilter", SimpleBeanPropertyFilter.filterOutAllExcept(filterProperties));

return mapper.filteredWriter(filters).writeValueAsString(user);

Проблема в том, что есть различные вызовы сервиса, где я не хочу применять фильтр вообще. В этих случаях я хочу вернуть весь класс домена без фильтрации каких-либо свойств. В случае, когда я просто пытаюсь вернуть класс домена, я получаю следующее исключение:

Caused by: org.codehaus.jackson.map.JsonMappingException: Can not resolve BeanPropertyFilter with id 'apiFilter'; no FilterProvider configured

at org.codehaus.jackson.map.ser.BeanSerializer.findFilter(BeanSerializer.java:252)
at org.codehaus.jackson.map.ser.BeanSerializer.serializeFieldsFiltered(BeanSerializer.java:216)
at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:140)

15
задан Community 23 May 2017 в 10:31
поделиться