我們試圖用Spring MVC構建一些RESTful服務。我們將提供幾種表示形式:XML,HTML,& JSON。我們希望使用JiBX作爲OXM技術。使用Spring MVC和JIBX編組不同的類與編組
我們目前很難弄清楚如何用JiBX連接Spring。如果我們要連線了一個類,例如Customer
,我們簡單地定義一個JibxMarshaller
,一個XML MarshallingView
,並將其添加過我們的ContentNegotiatingViewResolver
。這很好。
問題是我們不確定如何連接多個類的編組,例如,Customer
和User
。每個JibxMarshaller
只能支持一個類(與Jaxb2Marshaller不同,它可以支持很多類)。我們嘗試爲每個班級宣佈一名編組員,但MarshallingView
僅支持一名編組人員。聲明多個MarshallingView
s不起作用(它只顯示第一個作品)。
您的建議表示讚賞。謝謝。
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="mediaTypes">
<util:map>
<entry key="xml" value="application/xml"/>
</util:map>
</property>
<property name="defaultViews">
<util:list>
<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
<property name="marshaller" ref="userMarshaller"/>
</bean>
<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
<property name="marshaller" ref="customerMarshaller"/>
</bean>
</util:list>
</property>
</bean>
<bean id="userMarshaller" class="org.springframework.oxm.jibx.JibxMarshaller">
<property name="targetClass" value="com.mycompany.User"/>
</bean>
<bean id="customerMarshaller" class="org.springframework.oxm.jibx.JibxMarshaller">
<property name="targetClass" value="com.mycompany.Customer"/>
</bean>
更新基於以下僅限Ritesh的回答是:
事實證明,我被JibxMarshaller
的targetClass
財產揭去。我認爲這意味着編組人員只能爲單個類工作,但是,它似乎只是使用目標類作爲查找所有相關綁定的方式。所以,解決方案是隻使用一個編組器,使用您的綁定類中的任意目標類。例如:
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="mediaTypes">
<util:map>
<entry key="xml" value="application/xml"/>
</util:map>
</property>
<property name="defaultViews">
<util:list>
<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
<property name="marshaller" ref="jibxMarshaller"/>
</bean>
</util:list>
</property>
</bean>
<bean id="jibxMarshaller" class="org.springframework.oxm.jibx.JibxMarshaller">
<property name="targetClass" value="com.mycompany.User"/>
</bean>
我終於在幾周後重新審視這個問題,經過進一步的調查,看起來你是正確的。我認爲我的誤解是編組人員的「targetClass 」屬性。對我來說,這個屬性意味着編組將只爲目標類工作,這是不正確的。 – SingleShot 2011-02-22 19:47:54