是否有可能有選擇地確定何時在運行時使用@JsonFilter註釋?@JsonFilter引發「JsonMappingException:無法解析BeanPropertyFilter」
我得到JsonMappingException異常(見下文),當我不提供過濾器。
背景:
我從recent StackOverflow post,我可以使用@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)
在我編輯的例子中,我是否需要包含代碼以檢查在每個jax-rs服務調用中調用哪個編寫器方法?在一些服務方法中,我返回實際的用戶對象而不是字符串。非常感謝您的意見! – Justin 2012-02-21 18:29:47
好的,我有機會嘗試一下。你提出的「竅門」有效,但我無法得到你的第二個「更清潔」的建議。在這種情況下,我仍然收到「沒有FilterProvider配置」錯誤。再次感謝。 – Justin 2012-02-21 22:31:28
@Justin:好吧,IMO解決問題的「不潔淨」解決方法比「乾淨」的不工作:)更好。希望它有助於解決您的問題。 – 2012-02-22 08:33:22