【发布时间】:2016-11-22 13:11:32
【问题描述】:
我只需要在一个控制器中过滤某些属性。
Fasterxml JsonFilter 在我将它与控制器中的 ObjectMapper 一起使用时起作用,如下所示
FilterProvider filter2 = new SimpleFilterProvider().addFilter("somefilter",
SimpleBeanPropertyFilter.filterOutAllExcept("prop1","prop2"));
像对象一样
@JsonFilter("somefilter")
public class Bar{
String prop1;
String prop2;
String prop3;
}
但是当尝试使用 spring 控制器返回相同的对象时
@RequestMapping(value = "/path", method = RequestMethod.GET)
protected @ResponseBody Foo handleGet( ..
在哪里
public class Foo{
Bar p1;
Bar p2;
}
Bar 属性被完全省略。在这种情况下,我们需要返回未过滤的对象。
我必须使用控制器中的对象映射器来返回整个对象。
有没有办法禁用控制器的过滤器?
【问题讨论】:
-
您的意思是您要跳过 Bar 对象上的某些字段以进行序列化?
-
是的,使用 ObjectMapper 时跳过序列化。但是序列化控制器中的所有内容。
-
而当控制器使用它时,你想显示字段吗?抱歉,我无法编辑我之前的评论。
-
你试过
@JsonIgnoreProperties而不是过滤器吗? -
那是不同的。
标签: java spring spring-mvc jackson fasterxml