我正在创建一个XML,它根据Accept头( RESTful / JSON vs text/xml)返回json或xml。我让它在JSON上工作得很好,但是在XML上似乎不能工作。我正在使用Firefox的Poster插件客户端进行测试。
我的印象是,我只需要将Jackson和JAXB库添加到应用程序的类路径中。同样,它适用于JSON,但不适用于XML。
最初,我在发送Accept "text/xml“报头时收到406错误。然后我将@XmlRootElement(name="contact")添加到我的实体中,现在我得到了一个500错误。我需要把@XmlRootElement放在每个实体上吗?
尽管响应是500错误,但我在控制台中没有看到任何报告的错误。我在运行Tomcat7的Eclipse中进行测试。当我收到500错误时,控制台中是否应该看到一些错误?
我的"mvc-dispatcher-servlet.xml“有<mvc:annotation-driven />
下面是我的控制器中的相关代码:
@Controller
@RequestMapping("/contacts")
public class ContactsController {
@Autowired
ContactsService contactsService;
@RequestMapping(value="/{id}",
method=RequestMethod.GET,
headers = {"Accept=application/json, text/xml"})
public @ResponseBody Contact getContact(@PathVariable("id") int id) {
Contact queryContact = new Contact(id);
Contact result = contactsService.getContact(queryContact);
return result;
}
}"mvc-dispatcher-servlet.xml“非常简单。除了:我还需要什么吗?
<context:component-scan base-package="contactsapp.web.controller" />
<mvc:annotation-driven />
<mvc:resources mapping="/resources/**" location="/resources/"/>我使用的是Spring 3.1和以下版本:
<dependency org="com.sun.xml.bind" name="jaxb-impl" rev="2.2.5-b10" conf="runtime->default"/>
<dependency org="org.codehaus.jackson" name="jackson-mapper-asl" rev="1.7.1" conf="runtime->default"/>发布于 2012-01-25 03:27:20
事实证明我的配置是正确的。一旦我启用了更详细的日志记录,我意识到我的实体类中存在循环依赖关系,因此必须在这些字段上添加@XmlTransient
发布于 2012-01-25 03:25:25
你应该把
在Contact类上使用
@XmlRootElement告诉杰克逊如何解析。
https://stackoverflow.com/questions/8991183
复制相似问题