Mar*_*uka 2 spring spring-restcontroller
我正在使用Spring 4.x并且我有以下RestController方法,它应该返回所有航班的列表
@RequestMapping(produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE}, method = RequestMethod.GET)
public FlightWrapper returnAllFlights() {
List<FlightDto> flights = data.findAll();
return new FlightWrapper(flights);
}
Run Code Online (Sandbox Code Playgroud)
FlightWrapper类看起来像这样(rootElement = flight s element = flight):
@XmlRootElement(name = "flights")
public class FlightWrapper {
private List<FlightDto> flights;
public FlightWrapper() {}
public FlightWrapper(List<FlightDto> flights) {
this.flights = flights;
}
@XmlElement(name = "flight")
public List<FlightDto> getFlights() {
return flights;
}
public void setFlights(List<FlightDto> flights) {
this.flights = flights;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我调用returnAllFlights()时,它将以这种格式返回xml:
<FlightWrapper>
<flights>
<flights>
....
</flights>
<flights>
....
</flights>
</flights>
</FlightWrapper>
Run Code Online (Sandbox Code Playgroud)
我预计单程航班应该有标签航班,整个航班列表应该是航班,但是你可以看到列表中的项目与列表本身具有相同的标签.
知道怎么解决吗?
根据您的注释,因为您正在使用jackson-dataformat-xml模块,现在将忽略JAXB注释.您必须更新您的班级才能使用这些注释.
@JacksonXmlRootElement(localName="flights")
public class FlightWrapper {
private List<FlightDto> flights;
public FlightWrapper() {}
public FlightWrapper(List<FlightDto> flights) {
this.flights = flights;
}
@JacksonXmlElementWrapper(useWrapping=false)
@JacksonXmlProperty(localName="flight")
public List<FlightDto> getFlights() {
return flights;
}
public void setFlights(List<FlightDto> flights) {
this.flights = flights;
}
}
Run Code Online (Sandbox Code Playgroud)
我有同样的问题,但通过Spring Framework,而不是通过Spring Boot.但是当jackson-dataformat-xml模块添加到类路径中时会发生这种行为.根据我的经验.
| 归档时间: |
|
| 查看次数: |
927 次 |
| 最近记录: |