我使用angularJS和Spring3.2.4来处理REST异常处理和处理异常,如
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseStatus(value=HttpStatus.BAD_REQUEST)
@ResponseBody
public ErrorFormInfo handleMethodArgumentNotValid(HttpServletRequest req, MethodArgumentNotValidException ex, HttpServletResponse response) {
String errorMessage = "gender sring is out of range";
String errorURL = req.getRequestURL().toString();
System.out.println("Throwing exception from exception handler");
ErrorFormInfo errorInfo = new ErrorFormInfo(errorURL, errorMessage);
return errorInfo;
}
每当发送的参数验证失败时,它都会抛出一个MethodArgumentNotValidException,如果我错了,那么Spring3.2会自动转换json格式的对象,但是我无法在angularJs的错误块中获得对象。它抛出错误,并使用此输出显示“未定义响应”。
completeRequest(callback=done(status, response, headersString), status=400, response="{"errorMessage":"http:/...sring is out of range"}", headersString="Server: Apache-Coyote/1...MT\r\nConnection: close\r\n")angular-1.0.7.js (line 9333)
onreadystatechange()
我怀疑对象没有被转换成JSON,因为is有奇怪的头字符串。
下面是我的JS代码
$http.post('rest/create?cd=' + (new Date()).getTime(),
XYZ
.success(function(data) {
alert('Data added successfully');
}).error(function(data) {
var errorInfo = data;
alert("data from server side"+errorInfo.errorMessage);
alert("Unable to process");
});
请提前help...Thanks
发布于 2014-12-20 01:26:19
在angularJs的$httpProvider服务中注入了一个拦截器,它只为成功和错误而运行。因此,我编写了一段代码,用于处理响应“未定义”的情况。守则如下:
if(jsonStr.ERROR_URI != 'undefined')
{
var jsonStr = response.data;
console.log('inside error block');
console.log('response.status'+response.status);
console.log('response.data'+response.data);
console.log('response.data.ERROR_URI'+jsonStr.ERROR_URI);
return $q.reject(response);
}
如果响应是未定义的,它就直接拒绝它。它解决了我的问题。
https://stackoverflow.com/questions/24282705
复制