我正在开发Spring Rest和Spring Rest应用程序,如果我尝试生成json,一切都还可以。我可以在浏览器上看到它。没有错误。
但是如果我想生成XML,我使用produce =“application / xml”或者生成= MediaType.TEXT_XML_VALUE和 我收到此错误:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Sun Oct 23 18:30:51 EEST 2016
There was an unexpected error (type=Not Acceptable, status=406).
Could not find acceptable representation
我的休息代码是:
package getExample;
import java.util.ArrayList;
import java.util.List;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import pojo.Address;
import pojo.Person;
@RestController
public class GetExampleController {
@RequestMapping(value = "getExample",method=RequestMethod.GET,produces=MediaType.TEXT_XML_VALUE)
public List<Person> getExample1(@RequestParam(value = "personId", defaultValue = "0") String id) {
List<Person> personList = new ArrayList<>();
Person person1 = new Person("1", "ilkay", "günel",
new Address("Cennet Mah.", "K.Çekmece", "İstanbul", "TÜRKİYE"));
personList.add(person1);
Person person2 = new Person("2", "alican", "akkuş",
new Address("Cennet Mah.", "K.Çekmece", "İstanbul", "TÜRKİYE"));
personList.add(person2);
Person person3 = new Person("3", "mustafa", "demir",
new Address("Cennet Mah.", "K.Çekmece", "İstanbul", "TÜRKİYE"));
personList.add(person3);
if (id.equals("0")) {
return personList;
}
else {
return personList.subList(Integer.parseInt(id)-1, Integer.parseInt(id));
}
}
}
错误是什么?为什么我可以获得XML输出?我该如何解决这个问题?
答案 0 :(得分:3)
您需要添加jackson-dataformat-xml
的依赖关系:
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>
否则,您可以使用JAXB注释来注释您的bean。
如果你有Jackson XML扩展(jackson-dataformat-xml) classpath,它将用于呈现XML响应和非常相似 我们用于JSON的例子可以使用。
...
如果没有Jackson的XML扩展,JAXB(默认提供) 将使用JDK中的附加要求 [你的班级]注释为@XmlRootElement ...
...
要让服务器呈现XML而不是JSON,您可能必须发送 一个Accept:text / xml标题(或使用浏览器)。