gpt4 book ai didi

ajax - Spring3 将 XML 解码为 Java

转载 作者:行者123 更新时间:2023-12-02 02:11:01 26 4
gpt4 key购买 nike

我无法连接所有允许从 ajax 客户端发送的 xml 解码为 Java 对象的部分。我正在为 ajax 客户端、Spring3 和 JAXB 使用 Jquery。以下是关键组件:

Ajax 客户端

        function checkForNewActivities(activities) {
$j.ajax({
url: "upload/checkForNewActivities",
type: "POST",
async: true,
dataType: "xml",
data: ({activities:activities}),
contentType: "application/xml",

beforeSend: function() {
alert("sending ajax");
},
complete: function() {
alert("ajax sent");
},
success: function(data) {
alert("success");
},
error: function(jqXHR, textStatus, errorThrown) {
alert(textStatus + errorThrown);
}
});
}

Spring 配置

<bean id="marshallingConverter" class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
<property name="marshaller" ref="jaxbMarshaller" />
<property name="unmarshaller" ref="jaxbMarshaller" />
<property name="supportedMediaTypes" value="application/xml"/>
</bean>

<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound">
<list>
a bunch of java classes
</list>
</property>
</bean>

这里是作为目标的 Spring Controller 方法:

  @RequestMapping(value="/checkForNewActivities",headers="application/xml", method=RequestMethod.POST)
public @ResponseBody String uploadMultipleWorkouts(@RequestBody String activities) {
System.out.println(activities);
return "";
}

对于 RequestMapping 中的 headers="application/xml",永远不会调用此方法。如果我删除 header 参数,则会调用该方法并将事件转储到控制台显示转义的 xml。

我显然不知道如何将此方法连接到 spring 配置以便解码 xml。

最佳答案

您的 println 打印出转义 xml 的原因是因为变量 activities 的数据类型是 String。您需要创建一个类来保存将传递给方法的数据,以便 JAXB 可以将 xml 转换成一个结构。

例如,代替

public @ResponseBody String uploadMultipleWorkouts(@RequestBody String activities) {

你会想要

public @ResponseBody Activities uploadMultipleWorkouts(@RequestBody Activities activities) {

Activities 是您使用适当的 getter 和 setter 定义的类,以便可以分配您传入的 xml 数据。如果请求数据和响应数据必须不同,那么您可以简单地定义两个类,请求和响应变体。

至于为什么使用 headers="application/xml" 会搞砸,请尝试将其设置为 headers = {"content-type=application/xml"}>/p>

关于ajax - Spring3 将 XML 解码为 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12883523/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com