所以我正在使用XStream来创建我的xml rest响应,而且我对字段顺序有点麻烦。它与转换类中定义的顺序不匹配,也没有与1.2.2版本中提到的问题之一相反的声明顺序(我正在使用1.4.4版本)。
所以,如果我的班级看起来像:
person:
name
age
gender
输出中的顺序是
age gender name
有没有人对如何订购有任何建议? 我能找到的大多数帖子都是指setter的顺序,但我只是使用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>
答案 0 :(得分: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工厂或提供一个类似于上面代码的自定义实现。