首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用@ResponseBody & Method Converters绕过ViewResolver

使用@ResponseBody & Method Converters绕过ViewResolver
EN

Stack Overflow用户
提问于 2012-01-25 01:20:12
回答 2查看 1.7K关注 0票数 0

我正在创建一个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 />

下面是我的控制器中的相关代码:

代码语言:javascript
复制
    @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“非常简单。除了:我还需要什么吗?

代码语言:javascript
复制
    <context:component-scan base-package="contactsapp.web.controller" />
<mvc:annotation-driven />
<mvc:resources mapping="/resources/**" location="/resources/"/>

我使用的是Spring 3.1和以下版本:

代码语言:javascript
复制
    <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"/>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-25 03:27:20

事实证明我的配置是正确的。一旦我启用了更详细的日志记录,我意识到我的实体类中存在循环依赖关系,因此必须在这些字段上添加@XmlTransient

票数 1
EN

Stack Overflow用户

发布于 2012-01-25 03:25:25

你应该把

在Contact类上使用

@XmlRootElement告诉杰克逊如何解析。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8991183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档