Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何处理响应代码?_Java_Spring_Spring Mvc - Fatal编程技术网

Java 如何处理响应代码?

Java 如何处理响应代码?,java,spring,spring-mvc,Java,Spring,Spring Mvc,我需要发送不同的JSON,这取决于响应代码 @ApiOperation(value = "saveObject", nickname = "saveObject", httpMethod = "POST") @ApiResponses(value = { @ApiResponse(code = 200, message = "Success"), @ApiResponse(code = 404, message =

我需要发送不同的JSON,这取决于响应代码

 @ApiOperation(value = "saveObject", nickname = "saveObject", httpMethod = "POST")
        @ApiResponses(value = {
                @ApiResponse(code = 200, message = "Success"),
                @ApiResponse(code = 404, message = "Not Found"),
                @ApiResponse(code = 500, message = "Failure")})
        @PostMapping(value = "/save")
        public void saveUser(@RequestBody ObjectView object) {
            objectService.saveObject(object);
        }
示例:如果代码为200,则应发送

data: {
        “result”:”success”
    }
如果500

 data: {
        “error”:”500”
    }
如何使用
ResponseByAdvice

@RestControllerAdvice
public class ResponseView implements ResponseBodyAdvice<Object> {
    @Override
    public boolean supports(MethodParameter methodParameter, Class<? extends HttpMessageConverter<?>> aClass) {
        return true;
    }

    @Override
    public Object beforeBodyWrite(Object o, MethodParameter methodParameter, MediaType mediaType,
                                  Class<? extends HttpMessageConverter<?>> aClass, ServerHttpRequest serverHttpRequest,
                                  ServerHttpResponse serverHttpResponse) {
        return new WrapperObj<Object>(o);
    }

    @JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
    @JsonSerialize
    private class WrapperObj<T> {
        private final Object data;

        public WrapperObj(Object data) {
            this.data = data;
        }
    }
}
@RestControllerAdvice
公共类ResponseView实现ResponseBodyAdvice{
@凌驾
公共布尔支持(MethodParameter,类>aClass){
返回true;
}
@凌驾
BodyWrite之前的公共对象(对象o、方法参数、方法参数、MediaType、MediaType、,
类>aClass,ServerHttpRequest ServerHttpRequest,
ServerHttpResponse服务器HttpResponse){
返回新的包装器obj(o);
}
@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.ANY)
@JsonSerialize
私有类包装器OBJ{
私有最终对象数据;
公共包装器OBJ(对象数据){
这个数据=数据;
}
}
}
我是这样做的:

import org.springframework.http.HttpStatus;
public Object beforeBodyWrite(Object o, MethodParameter methodParameter, MediaType mediaType, Class<? extends HttpMessageConverter<?>> aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {

HttpServletResponse servletResponse = ((ServletServerHttpResponse) serverHttpResponse).getServletResponse();

if(servletResponse.getStatus() == 200) {
        return createYourResponseBodyE_G_200().getBody();

 } else if(servletResponse.getStatus() == 500) {
        return createYourResponseBodyE_G_500().getBody();
 }


public ResponseEntity<Object> createYourResponseBodyE_G_200() {

        return new ResponseEntity<Object>(  "data: { \"result\":\"success\" }", HttpStatus.OK);

}

public ResponseEntity<Object> createYourResponseBodyE_G_500() {

        return new ResponseEntity<Object>(  "data: { \"error\":\"500\" }", HttpStatus.INTERNAL_SERVER_ERROR);

}
import org.springframework.http.HttpStatus;
BodyWrite之前的公共对象(对象o、方法参数MethodParameter、MediaType MediaType、类>aClass、ServerHttpRequest ServerHttpRequest、ServerHttpResponse ServerHttpResponse){
HttpServletResponse servletResponse=((ServletServerHttpResponse)serverHttpResponse.getServletResponse();
if(servletResponse.getStatus()==200){
返回createYourResponseBodyE_G_200().getBody();
}else if(servletResponse.getStatus()==500){
返回createYourResponseBodyE_G_500().getBody();
}
公共响应创建您的响应{
返回新的ResponseEntity(“数据:{\“result\”:\“success\”}),HttpStatus.OK);
}
公共响应创建您的响应{
返回新的响应属性(“数据:{\'error\':\'500\'}”,HttpStatus.INTERNAL\u SERVER\u error);
}

@RestControllerAdvice它是有效的注释吗?@SumeshTG:Oh我看到了
@exceptionhandlentfoundexception(CustomNotFoundException.class)public ResponseMsg handleNotFoundException(CustomNotFoundException ex){ResponseMsg ResponseMsg=newresponsemsg(ex.getMessage());return ResponseMsg;}
将类似的处理程序方法添加到该控制器中。