【问题标题】:Spring Controller not producing XMLSpring Controller 不生成 XML
【发布时间】:2016-10-07 19:32:09
【问题描述】:

我在控制器里

@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

<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 Not Acceptable

有什么提示吗?

谢谢

【问题讨论】:

  • 感谢您的回答。我也注册了 Hibernate4Module() ,但不正确。在我解决了这个问题之后,现在就可以了。

标签: java xml spring-boot


【解决方案1】:

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

  1. 您无需将依赖项添加到 jackson-core - 它是使用 spring-boot-starter-web 自动添加的。
  2. 您无需为 jackson-dataformat-xml 指定版本 - 让 Spring Boot 为您管理版本。

找到以下最小设置,以通过 Jackson 工作获得 XML 序列化:

pom.xml中的依赖:

<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>

控制器和序列化类

@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:

curl -H "Accept: application/xml" http://localhost:8080/            
<Person><name>John Doe</name><age>44</age></Person>

请求 JSON:

curl -H "Accept: application/json" http://localhost:8080/
{"name":"John Doe","age":44}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    • 2013-01-05
    • 1970-01-01
    • 2014-07-25
    相关资源
    最近更新 更多