2009-11-06 9 views
9

Spring 3.0 RC1 framework'ü kullanıyorum ve şu anda Spring mvc'i test ediyorum. Huzurlu istekleri işlemek için Spring mvc kullanmak istedim. URI isteğini işlemek için denetleyicimi kurdum. İstekle xml iletiyorum.RESTful isteği yaparken Spring 3.0 mvc kullanarak bir nesneyi XML'e nasıl dönüştürebilirim?

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

Ben RequestObject için xml dönüştürme zor anlar yaşıyorum: şu gibi yani denetleyicisinde bir yöntem var. Bu konuda fazla dokümantasyon görmedim ve kimsenin beni doğru yöne yönlendirip yönlendiremeyeceğini merak ettim. Spring'in xml dosyasını RequestObject'e dönüştürmesini söylemek için JAXB veya bir şey kullanarak RequestObject'e açıklama eklemeniz gerekeceğini sanıyorum ama emin değilim.

Yardımlarınız için teşekkürler!

cevap

8

XML nesnesini Java nesnesine dönüştürmek için Apache Digest http://commons.apache.org/digester/'u kullanabilirsiniz. İlkbahar kendi içinde kendini kullanıyor.

Güncelleştirme Bu yeni özellik hakkında Spring 3.0'teki bilgilerden haberdar değildim. Seni yanlış anladığım için özür dilerim. Hızlı test yazdım ve yapmanız gereken bu.

1) ViewResoler ve MessageConverter'ı -servlet.xml dosyasında kurun. Benim testte bu Java sınıfına


@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); 
    }  
} 

Umut bu gibi Kontrolör sınıfa haritalama açıklama ekleyin içine XML yapısı ek açıklama ekleme) bu

<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 gibi görünüyor sana yardım edeceğim.

+0

Bağlantıyı aldığınız için teşekkürler .... belki de xml dönüştüren bir kütüphane aramıyordum. Xml'in bir nesneye dönüştürülmesi gereken Spring mvc'in nasıl yapıldığını merak ediyordum. Nesne, istek gövdesinde ne POST olursa olsun boştur. – brock

+0

Tam olarak aradığım şey bu. Sanırım çeviriciyi kaçırıyordum. @RequestBody ile ilgili belgeleri gördüm, ancak bunun ne için kullanılması gerektiğinden emin değildi. Yardımın için teşekkürler!! – brock