Java 在Angular JS中提取和显示错误消息
在Angular JS web app中,如果我的rest API返回异常(未处理的抛出),我如何向前端显示相应的错误 目前,我只能显示一般错误“error creating record.”,但无法从异常中检索准确的错误消息 控制器Java 在Angular JS中提取和显示错误消息,java,angularjs,Java,Angularjs,在Angular JS web app中,如果我的rest API返回异常(未处理的抛出),我如何向前端显示相应的错误 目前,我只能显示一般错误“error creating record.”,但无法从异常中检索准确的错误消息 控制器 $http.post("/mdmservice/services/entity", $scope.entity).success(function(data, status, headers, config, statusText) { $
$http.post("/mdmservice/services/entity", $scope.entity).success(function(data, status, headers, config, statusText) {
$scope.created=true;
$scope.buttonsDisabled = true;
$scope.entityCreatedMessage = "New record created successfully.";
$scope.error=false;
}).error(function(data, status, headers, config, statusText ) {
console.log("Error creating entity : " +data +"," +status +"," +headers +"," +config +"," +statusText);
$scope.error=true;
$scope.errorMessage="Error creating record.";
});
RESTAPI
@POST
@Path(value = "/create")
@Consumes(value = MediaType.APPLICATION_JSON)
@Override
public Long create(Eentity entity) {
Long entityId = null;
entity.setEntityId(null);
entity.setIsExcluded("N");
try {
// For create, the editIndicator=1
entityId = entityBusiness.createOrUpdate(entity, 1);
} catch (Exception e) {
throw new WebApplicationException(e);
}
return entityId;
}
异常日志
Caused by: com.jay.MyException: Entity code must be unique
at com.jay.BusinessImpl.createOrUpdateEntity(EntityBusinessImpl.java:93)
at com.jay.service.impl.EntityServiceImpl.createEntity(EntityServiceImpl.java:145)
... 38 more
Caused by: com.jay.common.exception.EbaDataException: Entity code must be unique
at com.jay.mdm.data.repository.jdbc.impl.EntityRepositoryJdbcImpl.createOrUpdateEntity(EntityRepositoryJdbcImpl.java:304)
at com.jay.mdm.business.impl.EntityBusinessImpl.createOrUpdateEntity(EntityBusinessImpl.java:91)
... 39 more
<Dec 10, 2015 4:08:54 PM GMT> <Warning> <org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper> <BEA-000000> <javax.ws.rs.WebApplicationException: H
TTP 500 Internal Server Error
原因:com.jay.MyException:实体代码必须唯一
在com.jay.BusinessImpl.createOrUpdateEntity(EntityBusinessImpl.java:93)上
位于com.jay.service.impl.EntityServiceImpl.createEntity(EntityServiceImpl.java:145)
... 38多
原因:com.jay.common.exception.EbaDataException:实体代码必须唯一
位于com.jay.mdm.data.repository.jdbc.impl.EntityRepositoryJdbcImpl.createOrUpdateEntity(EntityRepositoryJdbcImpl.java:304)
位于com.jay.mdm.business.impl.EntityBusinessImpl.createOrUpdateEntity(EntityBusinessImpl.java:91)
... 39多
您可以将错误对象绑定到控制器,并将其绑定到视图以显示异常的内容,如:
$http.post("/mdmservice/services/entity", $scope.entity).success(function(data, status, headers, config, statusText) {
$scope.created=true;
$scope.buttonsDisabled = true;
$scope.entityCreatedMessage = "New record created successfully.";
$scope.error=false;
}).error(function(data, status, headers, config, statusText ) {
console.log("Error creating entity : " +data +"," +status +"," +headers +"," +config +"," +statusText);
$scope.error = data;
});
在你看来:
Status : {{error.statusCode}}
Label : {{error.error}}
下面是一个示例:使用某个HTTP资源测试仪测试API端点可能会有所帮助,并查看堆栈跟踪中的错误消息是否出现在响应中的任何位置。您可以通过数据访问服务器响应以获得成功和错误<代码>$scope.entityCreatedMessage=数据代码>@user3632710谢谢,但错误消息作为异常抛出,无法在控制器中获取这些消息。你的意思是我们永远不会抛出异常,而是捕获异常并在返回的对象中返回消息吗?我经常使用express而不是java,所以我真的帮不了你。也许这个问题和你的有关?谢谢。问题是如何从异常stacktrace获取错误消息到控制器。。。。在错误块中,我尝试console.log所有这些参数…但无法获取错误消息。错误(函数(数据、状态、标题、配置、状态文本){您想在客户端检索Java stacktrace吗?在这种情况下,您必须配置服务器并让他在响应中插入stacktrace。有时,可以通过将服务器切换到开发模式来实现。然后您将能够解析返回的HTML并将其注入控制器。谢谢。没有异常错误消息未出现在响应中。这是一个抛出的未处理异常。如果它未出现在响应中,则客户端或客户端无法获取它。请找到一种方法将堆栈跟踪异常包括在响应中。很可能,您必须更改后端/服务器端代码或配置。