How to return XML/JSON representation without the entity ID or a given attribute in JAX-RS at runtime? -


इस इकाई पर विचार करें:

  @Entity @XmlRootElement @XmlAccessorType (XmlAccessType.FIELD) सार्वजनिक क्लास उपयोगकर्ता {@Id @GeneratedValue (strategy = GenerationType.AUTO) निजी इन्ट आईडी; निजी स्ट्रिंग उपयोगकर्ता नाम; निजी स्ट्रिंग पासवर्ड; // getters और setters} @Path ( "/ उपयोगकर्ताओं") @Stateless @Produces ({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) सार्वजनिक वर्ग UserService {@GET @PATH ( "सभी") लौट // सभी उपयोगकर्ता नाम की सूची @   

अब xml या JSON रिटर्न आईडी तत्व शामिल हैं; यानी

  PATH ("{id}"} & LT; उपयोगकर्ता & gt; & lt; आईडी & gt; 343 & lt; / id & gt; & lt; username & gt; नाम & lt; / username & gt; & lt; पासवर्ड & gt; pwd & lt; / पासवर्ड & gt; & lt; / उपयोगकर्ता & gt;   

क्यू 1) प्रश्न संसाधन की पीढ़ी (जब प्राप्त अनुरोध में आता है) के दौरान होता है, क्या id तत्व को वापसी xml ऑब्जेक्ट से निकालना संभव है यहां मुझे तैनाती पर पता है कि मैं आईडी विशेषता को एक्सएमएल से निकालना चाहता हूं।

मैं निम्न कर सकता हूं; लेकिन समस्या को मुझे अपनी आईडी विशेषता को बदलने से पहले इकाई को अलग करना होगा और मुझे यकीन नहीं है कि यह कैसे किया जा सकता है (क्योंकि यह कंटेनर प्रबंधित है)

  @GET @ path ("id } ") सार्वजनिक उपयोगकर्ता getUser (@PathParam (" आईडी ") आईडी आईडी) {उपयोगकर्ता यू = यू = em.find (User.class, id); // ऑब्जेक्ट को अलग करें u.setId (-9999) यू; }   

प्रश्न 2) एक चरण में अधिक, क्या रन-टाइम पर कौन से विशेषताओं की जरूरत होती है इसके आधार पर उपयोगकर्ता ऑब्जेक्ट को वापस करना संभव है: ex: www.foo.com/ प्रयोक्ता / 1? एट = उपयोगकर्ता नाम

यहाँ मैं निर्दिष्ट करता हूं, मुझे यूजर ऑब्जेक्ट के यूजर ऑब्जेक्ट की आईडी 1 के साथ केवल जरूरत है। मेरी GET अनुरोध विधि में, मैं निम्न कर सकता हूं, लेकिन यह मुझे भंगुर लग रहा है मुझे लगता है कि वहाँ इस के लिए एक क्लीनर समाधान है।

  @GET @Path ( "{आईडी}") सार्वजनिक उपयोगकर्ता getUser (@PathParam ( "आईडी") पूर्णांक आईडी, @QueryParam ( "att ") स्ट्रिंग विशेषता) {उपयोगकर्ता यू = यू = em.find (User.class, id); उपयोगकर्ता यू 2 = नल; अगर (विशेषता == शून्य) {वापसी यू; } और अगर (att = "id") {u2.setUserName (u.getUserName ()); u2.setUserPassword (u.getUserPassword ()); } Else if (att = "password") {// ऊपर के रूप में एक ही तर्क} और अगर (att = "उपयोगकर्ता नाम") {} वापसी u2; }}   

धन्यवाद

"क्यू 1) प्रश्न संसाधन की पीढ़ी के दौरान होता है (जब GET अनुरोध आता है), क्या आईडी तत्व को वापसी एक्सएमएल ऑब्जेक्ट से निकालना संभव है। यहां मुझे तैनाती पर पता है कि मैं आईडी विशेषता को एक्सएमएल से निकालना चाहता हूं। "

आप बस इस्तेमाल कर सकते हैं -

@XmlTransient एनोटेशन एक JavaBean संपत्ति नाम और एक फ़ील्ड नाम के बीच नाम टकराव को हल करने के लिए उपयोगी है या एक क्षेत्र / संपत्ति की मैपिंग को रोकने

  @Id @XmlTransient @GeneratedValue (रणनीति = GenerationType.AUTO) निजी पूर्णांक आईडी।   

"क्यू 2) एक चरण में अधिक, क्या रन-टाइम पर कौन से विशेषताओं की आवश्यकता है, इसके आधार पर उपयोगकर्ता वस्तु वापस करना संभव है: ex: www.foo .com / users / 1? Att = उपयोगकर्ता नाम "

जहां तक ​​यह सवाल है, मुझे कोई वास्तविक " सुरुचिपूर्ण " रास्ता नहीं दिखाई देता यह करने के लिए, आप वर्तमान में क्या कर रहे हैं (आप मानते हैं कि आप अभी भी एक XML प्रतिक्रिया चाहते हैं) की सीमा में कुछ के अलावा

Comments

Popular posts from this blog

java - ImportError: No module named py4j.java_gateway -

python - Receiving "KeyError" after decoding json result from url -

.net - Creating a new Queue Manager and Queue in Websphere MQ (using C#) -