2013-03-12 121 views
1

所以我使用XStream來創建我的xml rest響應,並且我在字段順序方面有點麻煩。它與轉換類中定義的順序不匹配,也不符合1.2.2版本(我使用1.4.4版本)中提到的相反聲明順序。Spring + xstream:字段沒有按正確的順序顯示

所以,如果我的類看起來像:

person: 
    name 
    age 
    gender 

輸出順序

age gender name 

有沒有人對如何訂購這些有什麼建議? 我可以找到的大多數帖子都是指setters的順序,但我只是使用Person構造函數,並讓spring + XStream自動處理轉換。

編輯: 配置部分:

<bean 
     class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> 
     <property name="order" value="1" /> 
     <property name="mediaTypes"> 
      <map> 
       <entry key="xml" value="application/xml"/> 

    </map> 
     </property> 

     <property name="defaultViews"> 
      <list> 
       <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" /> 

       <bean class="org.springframework.web.servlet.view.xml.MarshallingView"> 
        <constructor-arg> 
         <bean class="org.springframework.oxm.xstream.XStreamMarshaller"> 
          <property name="autodetectAnnotations" value="true" /> 
          <property name="supportedClasses"> 
           <list> 
            <value>com.jackdans.model.InterestingPeople</value> 
           </list> 
          </property> 
         </bean> 
        </constructor-arg> 
       </bean> 
      </list> 
     </property> 
    </bean> 

回答

1

FAQ ...

SortableFieldKeySorter sorter = new SortableFieldKeySorter(); 
sorter.registerFieldOrder(Person.class, new String[] { "name", "age", "gender" }); 
xstream = new XStream(new Sun14ReflectionProvider(new FieldDictionary(sorter))); 

如果你想這與Spring集成,那又另當別論。您可能需要創建一個XStream工廠,或者提供一個類似於上述代碼的自定義實現。

+0

我檢查了這個部分,但如前所述,我沒有創建一個xstream實例。我讓春天爲我處理轉換。我所做的只是添加所需的Maven依賴項並添加一個ContentNegotiatingViewResolver(如下所示:http://pfelitti87.blogspot.be/2012/07/rest-services-with-spring-3-xml-json.html – 2013-03-12 22:01:54

+0

我做了只是嘗試添加FieldKeySorter接口並在那裏創建該映射,但似乎沒有調用,而規範暗示它會自動調用。任何建議? – 2013-03-13 09:23:31

+0

我/我們需要查看Spring配置的相關部分 – 2013-03-13 11:53:54

相關問題