Можно ли выборочно определить, когда аннотация @JsonFilter будет использоваться во время выполнения?
Я получаю исключение JsonMappingException (см. ниже), когда я не предоставляю фильтр.
Фон:
Я узнал из qaru.site/info/135925/..., что я могу использовать @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)