首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring控制器不生成XML

Spring控制器不生成XML
EN

Stack Overflow用户
提问于 2016-10-07 18:23:35
回答 1查看 112关注 0票数 0

我有控制器

代码语言:javascript
复制
@RequestMapping(value = "/authors", produces = {"application/json","application/xml"})
public class AuthorController {

    @RequestMapping(value = "/all",method = RequestMethod.GET)
    public List<Author> findAll() {
        return authorRepository.findAll();
    }
}

pom.xml

代码语言:javascript
复制
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.8.3</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
    <version>2.8.3</version>
</dependency>

当Accept : application/json时,响应正常当Accept : application/xml时,响应为406不可接受

有什么提示吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2016-10-07 19:32:09

假设你用@RestController注释了你的控制器,它应该可以工作。

Spring Boot你不需要向jackson-core添加依赖--它是用spring-boot-starter-web.

  • You自动添加的--不需要给jackson-dataformat-xml指定版本--让

  • 为你管理版本。

找到下面的最小设置来获得Jackson work的XML序列化:

pom.xml中的依赖项

代码语言:javascript
复制
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-xml</artifactId>
    </dependency>
</dependencies>

控制器和序列化类

代码语言:javascript
复制
@RestController
class PersonController {

    @GetMapping("/")
    Person get() {
        return new Person("John Doe", 44);
    }
}

class Person {
    private String name;
    private int age;

    public Person(final String name, final int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

XML请求:

代码语言:javascript
复制
curl -H "Accept: application/xml" http://localhost:8080/            
<Person><name>John Doe</name><age>44</age></Person>

请求JSON:

代码语言:javascript
复制
curl -H "Accept: application/json" http://localhost:8080/
{"name":"John Doe","age":44}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39915019

复制
相关文章

相似问题

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