如何解决@ResponseBody无法在Java 6中生成XML
尝试创建以下包装器类:
@XmlRootElement
class Countries {
private List<Country> countries = new ArrayList<Country>()
//getters/setters
}
并从控制器而不是原始列表返回它:
public @ResponseBody Countries getCountries()
您的问题很可能是由无法整理Java列表的JAXB引起的(它不知道如何命名XML文档的根标记)。请注意,在JSON中请求数据时,如果您的CLASSPATH中有Jackson可用,则可能不会发生您的问题。
解决方法
我有一个Spring MVC 3 / J2EE项目。jsp呈现控制器可以正常工作,但是为Ajax呈现XML的一个控制器无法正常工作。我在RAD
7.5中使用JDK 1.6,因此JAXB应该在类路径中,甚至我尝试将最新的JAXB jar添加到lib文件中以确保。 拨打电话时仍然出现406错误。
我的DOJO调用具有handleAs: "xml"
,我已经通过FireBug
确认了application/xml
它在Accept
标题上。我的<mvc:annotation-driven />
spring servlet
xml文件中有一行。我可以看到该方法正在被调用并返回而没有错误。我不确定下一步应该尝试什么进行调试。
//Country is a class with only primative types which implements Serializable.
public @ResponseBody List<Country> getCountries(){
return addressService.getCountries();
}
function loadData(){
console.log("Before get ...");
dojo.xhrGet({
url:"http://localhost:9080/sample/shared/getCountries.htm",handleAs:"xml",load: function(data){
console.log("In load function ...");
try {
for(var i in data){
console.log("key",i,"value",data[i]);
}
}catch (ex){
console.error("Failure in load function: " + ex);
}
console.log("Exiting load function ...");
},error: function(x){
console.error("Error in ajax ...");
console.error(x);
},failOk: false
});
console.log("After get ...");
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。