1

そのため、XStream を使用して xml レスト レスポンスを作成していますが、フィールドの順序に少し問題があります。変換されたクラスで定義された順序とも、1.2.2 リリースの問題の 1 つとして言及されている反対の宣言順序とも一致しません (私は 1.4.4 リリースを使用しています)。

したがって、私のクラスが次のようになったとします。

person:
    name
    age
    gender

出力の順序は

age gender name

これらを注文する方法について誰かアドバイスはありますか?私が見つけることができるほとんどの投稿はセッターの順序を参照していますが、私はちょうど 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

FAQから...

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 に答える