क्या यह चुनना संभव है कि @JsonFilter एनोटेशन रनटाइम पर कब उपयोग किया जाए?@ जेसनफ़िल्टर फेंकता है "जेसन मैपिंग अपवाद: बीनप्रॉपर्टीफिल्टर को हल नहीं कर सकता"
जब मैं फ़िल्टर प्रदान नहीं करता हूं तो मुझे जेसन मैपिंग अपवाद अपवाद (नीचे देखें) मिल रहा है।
पृष्ठभूमि:
मैं एक recent StackOverflow post कि मैं @JsonFilter उपयोग कर सकते हैं गतिशील रूप से सेम गुण धारावाहिक हो रही फिल्टर करने के लिए से सीखा है। यह बहुत अच्छा काम करता है।
// shortened for brevity
FilterProvider filters = new SimpleFilterProvider().addFilter("apiFilter", SimpleBeanPropertyFilter.filterOutAllExcept(filterProperties));
return mapper.filteredWriter(filters).writeValueAsString(user);
समस्या: मेरे डोमेन वर्ग के लिए और मेरे jax-रु सेवा में इस कोड (CXF कार्यान्वयन का उपयोग) के अलावा के साथ @JsonFilter("apiFilter")
जोड़ने के बाद, मैं गतिशील गुण मेरी RESTful API द्वारा फिल्टर करने के लिए कर रहा हूँ क्या अलग-अलग सेवा कॉल हैं जहां मैं फ़िल्टर को बिल्कुल लागू नहीं करना चाहता हूं। उन मामलों में मैं किसी भी संपत्ति को फ़िल्टर किए बिना पूरे डोमेन क्लास को वापस करना चाहता हूं।
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)
आपके संपादित उदाहरण में, क्या मुझे यह कोड जांचने की आवश्यकता होगी कि प्रत्येक जैक्स-आरएस सेवा कॉल में कौन सी लेखक विधि कॉल करें? कुछ सेवा विधियों में मैं स्ट्रिंग के बजाए एक वास्तविक उपयोगकर्ता ऑब्जेक्ट देता हूं। आपके इनपुट के लिए बहुत धन्यवाद! – Justin
ठीक है, मुझे इसे आज़माने का मौका मिला। आपके द्वारा सुझाए गए "चाल" का काम करता है लेकिन मुझे काम करने के लिए आपका दूसरा "क्लीनर" सुझाव नहीं मिल सका। उस स्थिति में मुझे अभी भी "कोई फ़िल्टरप्रोवाइडर कॉन्फ़िगर नहीं किया गया" त्रुटि प्राप्त होती है। एक बार फिर धन्यवाद। – Justin
@ जस्टिन: ठीक है, आईएमओ एक "अशुद्ध" कामकाज जो समस्या हल करता है एक "साफ" से बेहतर है जो काम नहीं कर रहा है :)। उम्मीद है कि यह आपकी समस्या को हल करने में मदद करता है। –