我扩展了 ResponseEntity 类并使用构造函数创建了一个自定义类。
But in Spring 3 and Spring 4 JSON format is different.
1) Spring 4:
[
{
"communityTypeId": 1,
"communityTypeName": "Indian"
}
]
2) Spring 3:
{
"headers": {},
"body": [
{
"communityTypeId": 1,
"communityTypeName": "Indian"
}
]
}
我的 Controller 方法是:
@RequestMapping(value = "/getcommunity")
public @ResponseBody CultureRideResponseEntity getCommunity() {
try {
List<CommunityType> communityTypeList = iCommunityTypeService.getList();
if (communityTypeList != null && communityTypeList.size() > 0)
return new CultureRideResponseEntity(HttpStatus.OK, communityTypeList);
return new CultureRideResponseEntity(HttpStatus.NO_CONTENT, CulturerideConstant.NO_COMMUNITY_FOUND);
} catch (CultureRideException ex) {
return new CultureRideResponseEntity(HttpStatus.EXPECTATION_FAILED, ex.errorMessage());
}
}
响应实体类是我为了扩展 ResponseEntity 而创建的:
public class CultureRideResponseEntity extends ResponseEntity<Object> {
// String Property is used to store error message
private String message;
public CultureRideResponseEntity(HttpStatus status, Object data) {
super(data, status);
log.debug("response data:", data);
}
public CultureRideResponseEntity(HttpStatus status, Exception ex) {
super(null, status);
message = ex.getMessage();
log.error(ex.getMessage(), ex);
}
public CultureRideResponseEntity(HttpStatus status, String msg) {
super(null, status);
setMessage(msg);
log.debug("response data:", msg);
}
public CultureRideResponseEntity(HttpStatus status, Object data, String msg) {
super(data, status);
setMessage(msg);
log.debug("response data:", data);
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
最佳答案
为什么要扩展 ResponseEntity,这看起来很奇怪?
无论如何,ResponseEntity (HttpEntity) 在 Spring 4 中有一个 getHeaders(),并且这似乎被序列化为 JSON 的一部分。
看起来扩展是为了促进错误处理而创建的,这通常是使用 @ExceptionHandler 注解的方法来完成的,并返回另一个带有适当错误代码的 ResponseEntity 。
关于java - 响应未根据 Spring 4.3.0 中我的自定义响应类进行转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41503700/