Spring bean属性配置

时间:2019-01-24 16:20:44

标签: java spring

我正在尝试配置JaxB2Marshaller以便转义诸如“ <”或“>”之类的特殊字符,因为marshaller会将其解析为&gt&lt,并且我想保留<>字符。

我读了一篇帖子(here),内容如下:

  

为marshaller设置以下属性:marshaller.setProperty(“ jaxb.encoding”,“ Unicode”); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,true); marshaller.setProperty(CharacterEscapeHandler.class.getName(),new CustomCharacterEscapeHandler());

因此,我创建了一个bean,并设法设置了前2个第一个属性(Encoding和Formatted Output),但是在设置CharacterEscapeHandler时出现了异常。我收到此异常:

  

方法抛出“ org.springframework.oxm.UncategorizedMappingException”异常。   javax.xml.bind.PropertyException:名称:com.sun.xml.bind.marshaller.CharacterEscapeHandler值:com.sun.xml.internal.bind.marshaller.NoEscapeHandler@6bc5dd2a

我认为这是因为我没有正确配置bean属性

<bean id="noEscapeHandler" class="com.sun.xml.internal.bind.marshaller.NoEscapeHandler" />

 <bean id="customJaxb2Marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="contextPath" value="${custom.jaxb2.contextpath}"/>
    <property name="marshallerProperties">
        <map>
            <entry>
                <key>
                    <util:constant static-field="javax.xml.bind.Marshaller.JAXB_FRAGMENT"/>
                </key>
                <value type="java.lang.Boolean">true</value>
            </entry>

            <entry>
                <key>
                    <util:constant static-field="javax.xml.bind.Marshaller.JAXB_ENCODING"/>
                </key>
                <value type="java.lang.String">Unicode</value>
            </entry>

            <entry>
                <key>
                    <util:constant static-field="javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT"/>
                </key>
                <value type="java.lang.Boolean">true</value>
            </entry>

            <entry value-ref="noEscapeHandler" key="com.sun.xml.bind.marshaller.CharacterEscapeHandler"/>

        </map>
    </property>

</bean>

有任何提示吗?我以为我的问题就在这里。如何将这个Java代码转换为像上面显示的那样的bean xml声明的属性?

marshaller.setProperty(CharacterEscapeHandler.class.getName(), new CustomCharacterEscapeHandler());

0 个答案:

没有答案