我有一个控制器建议类,但是我似乎不能让它返回XML,即使我已经使用了@RequestMapping
注解。
@RestControllerAdvice
public class ControllerAdvice {
@ExceptionHandler(Exception.class)
@RequestMapping(produces = MediaType.APPLICATION_XML_VALUE)
public PriceAvailabilityResponse handleControllerErrorXML(final Exception e) {
e.printStackTrace();
System.out.println("Exception Handler functional");
PriceAvailabilityResponse priceAvailabilityResponse = new PriceAvailabilityResponse();
priceAvailabilityResponse.setStatusMessage("Server Error");
priceAvailabilityResponse.setStatusCode(99);
return priceAvailabilityResponse;
}
}
请注意@RequestMapping(produces = MediaType.APPLICATION_XML_VALUE)
在rest控制器中如何工作,以控制响应的形成方式。
这里有一个例子,说明了PriceAvailabilityResponse
在前面提到的代码块中可能是什么。
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@JsonInclude(JsonInclude.Include.NON_EMPTY)
@Getter
@Setter
public class PriceAvailabilityResponse {
@JacksonXmlProperty(isAttribute = true, localName = "StatusCode")
@JsonProperty(value = "StatusCode", required = false)
private int statusCode = 0;
@JacksonXmlProperty(isAttribute = true, localName = "StatusMessage")
@JsonProperty(value = "StatusMessage", required = false)
private String statusMessage;
}
下面是抛出错误的rest控制器方法示例
@RequestMapping(value = "/error_test", produces = MediaType.APPLICATION_XML_VALUE)
public PriceAvailabilityResponse getPriceResponse() throws Exception{
int x = 1/0;
return null;
}
我为这段代码编写了一个模型,根据哪个端点访问微服务来返回JSON和XML,这是绝对必要的。
不幸的是,当我点击/error_test
路径时,我的响应总是以JSON格式出现。
我怎样才能强制响应为XML呢?非常感谢您的宝贵时间。
1条答案
按热度按时间jdgnovmf1#
下面的方法应该可以解决您的问题
从异常处理程序返回响应实体,并使用它指定媒体类型。
如果没有jackson-dataformat-xml依赖项,请包括它