jersey - 异常Mapper没有捕获400个错误。

时间:2017-07-22 06:41:42

标签: java jersey jax-rs jersey-2.0 hibernate-validator

我试图将我的验证错误映射到异常映射器,但它没有赶上。页面显示HTTP状态400 - 错误请求。      下面是我的映射器代码。

@Provider
public class UnexpectedExceptionMapper implements 
ExceptionMapper<Exception> {


@Override
public Response toResponse(Exception e) {


        return Response
         .status(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode())
                .type(MediaType.APPLICATION_JSON_TYPE)
                .entity("validation Exception : " + e.getMessage() + "error code :" + Response.Status.INTERNAL_SERVER_ERROR.getStatusCode())
                .build();
    }

以下是资源文件代码。

@PUT
@Consumes(MediaType.APPLICATION_JSON)
public Settings updateSettings(@Valid SettingsForm settingsForm) {
  return SettingsDAO.updateSettings(settingsForm);

}

我正在使用Hibernate validator.Form类如下:

public class SettingsForm {
@NotNull
private int sensorLogCollectionInterval;
@NotNull
private int sensorConnectionErrorCount;
@NotNull
private boolean analysisServerEnabled;
@Pattern(regexp = "^(https?:\\/\\/)?((\\w+\\.)?\\w+\\.\\w+|\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?)(\\/)?([^\\.\\s\\,])*$")
private String analysisServerUrl;
@Size(min = 1, max = 20)
private String analysisServerCompanyId;
//getters and setter//
}

我需要将erros验证为json。任何人都可以帮助我。

1 个答案:

答案 0 :(得分:0)

你有一个带有getClasses覆盖的Application类吗?如果是这样,请将Exception映射器添加到要在Rest服务中公开的类集。否则,如果您正在使用包扫描,则添加@Provider注释。