2009-11-06 10 views
9

बनाते समय मैं वसंत 3.0 एमवीसी का उपयोग कर एक्सएमएल को ऑब्जेक्ट में कैसे परिवर्तित कर सकता हूं, मैं स्प्रिंग 3.0 आरसी 1 फ्रेमवर्क का उपयोग कर रहा हूं और मैं वर्तमान में स्प्रिंग एमवीसी का परीक्षण कर रहा हूं। मैं आराम से अनुरोधों को संभालने के लिए स्प्रिंग एमवीसी का उपयोग करना चाहता था। मैंने यूआरआई अनुरोध को संभालने के लिए अपना नियंत्रक स्थापित किया है। मैं अनुरोध के साथ एक्सएमएल में गुजर रहा हूँ।रीस्टल अनुरोध

public void request(RequestObject request) { 
    doSomething(); 
} 

मैं एक कठिन समय RequestObject लिए एक्सएमएल परिवर्तित हो रहा है: इस प्रकार की तरह तो नियंत्रक पर मैं एक विधि है। मैंने इस पर अधिक दस्तावेज नहीं देखा है और मैं सोच रहा था कि कोई मुझे सही दिशा में इंगित कर सकता है। मुझे लगता है कि आपको XAX फ़ाइल को RequestObject में बदलने के लिए वसंत को बताने के लिए JAXB या कुछ का उपयोग कर अनुरोध ऑब्जेक्ट को एनोटेट करना होगा, लेकिन मुझे यकीन नहीं है।

आपकी सभी मदद के लिए धन्यवाद !!

उत्तर

8

XML को जावा ऑब्जेक्ट में कनवर्ट करने के लिए आप अपाचे डाइजेस्ट http://commons.apache.org/digester/ का उपयोग कर सकते हैं। वसंत इसे आंतरिक रूप से उपयोग करता है।

अद्यतन मुझे स्प्रिंग 3.0 में इस नई सुविधा के बारे में पता नहीं था। आपको गलत तरीके से क्षमा करने के लिए खेद है। मैंने त्वरित परीक्षण लिखा और यही वह है जो आपको करना चाहिए।

1) ViewResoler और MessageConverter में -servlet.xml सेट करें। अपने परीक्षण में यह इस

<bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/> 

    <bean id="person" class="org.springframework.web.servlet.view.xml.MarshallingView"> 
     <property name="contentType" value="application/xml"/> 
     <property name="marshaller" ref="marshaller"/> 
    </bean> 

    <oxm:jaxb2-marshaller id="marshaller"> 
     <oxm:class-to-be-bound name="com.solotionsspring.test.rest.model.Person"/> 
    </oxm:jaxb2-marshaller> 

    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> 
     <property name="messageConverters"> 
      <list> 
      <ref bean="marshallingHttpMessageConverter"/> 
      </list> 
     </property> 
    </bean> 

    <bean id="marshallingHttpMessageConverter" 
      class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter"> 
     <property name="marshaller" ref="marshaller" /> 
     <property name="unmarshaller" ref="marshaller" /> 
    </bean> 

2 की तरह दिखता है) अपने जावा वर्ग


@XmlRootElement 
public class Person { 
    private String name; 
    private int age; 
    private String address; 
    /** 
    * @return the name 
    */ 
    @XmlElement 
    public String getName() { 
     return name; 
    } 
    /** 
    * @param name the name to set 
    */ 
    public void setName(String name) { 
     this.name = name; 
    } 
    /** 
    * @return the age 
    */ 
    @XmlElement 
    public int getAge() { 
     return age; 
    } 
    /** 
    * @param age the age to set 
    */ 
    public void setAge(int age) { 
     this.age = age; 
    } 
    /** 
    * @return the address 
    */ 
    @XmlElement 
    public String getAddress() { 
     return address; 
    } 
    /** 
    * @param address the address to set 
    */ 
    public void setAddress(String address) { 
     this.address = address; 
    } 
} 

3) की तरह


@Controller 
public class RestController { 

    @RequestMapping(value = "/person", method = RequestMethod.PUT) 
    public ModelMap addPerson(@RequestBody Person newPerson) { 
     System.out.println("new person: " + newPerson); 
     return new ModelMap(newPerson); 
    }  
} 

आशा यह आपके नियंत्रक वर्ग में मानचित्रण टिप्पणी जोड़ें में XML संरचना टिप्पणियां जोड़ें आपकी सहायता करेगा।

+0

धन्यवाद आपको लिंक मिला .... लेकिन शायद मैं एक पुस्तकालय की तलाश नहीं कर रहा था जो एक्सएमएल परिवर्तित करता है। मैं सोच रहा था कि स्प्रिंग एमवीसी कैसे है कि एक्सएमएल को किसी ऑब्जेक्ट में परिवर्तित करने की आवश्यकता है। ऑब्जेक्ट शून्य है इससे कोई फर्क नहीं पड़ता कि मैं अनुरोध निकाय में क्या पोस्ट करता हूं। – brock

+0

यह वही है जो मैं ढूंढ रहा था। मुझे लगता है कि मैं संदेश कनवर्टर गायब था। मैंने @RequestBody पर प्रलेखन देखा लेकिन यह सुनिश्चित नहीं था कि इसका उपयोग किसके लिए किया जाना चाहिए। आपके सहयोग के लिए धन्यवाद!! – brock