1

所以我使用 XStream 来创建我的 xml 休息响应,我在字段顺序方面遇到了一些麻烦。它与转换后的类中定义的顺序不匹配,也不与作为 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>
4

1 回答 1

1

常见问题...

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

如果您想将其与 Spring 集成,那是另一回事。您可能必须创建一个 XStream 工厂或提供与上述代码类似的自定义实现。

于 2013-03-12T21:57:31.440 回答