2016-09-21 2 views
1

Ich möchte meine eigene benutzerdefinierte Validierungsfehlermeldung erstellen. Ich habe so viele Foren durchforstet, aber ich bin mir nicht sicher, wo ich falsch liege.MyCustomExceptionMapper wird nicht aufgerufen - Benutzerdefinierte Validierungsfehlermeldung - Jersey Validation

@Provider 
public class ConstraintViolationExceptionMapper implements ExceptionMapper<ValidationException>{ 
private String field; 
private String code; 
private String message; 

public ConstraintViolationExceptionMapper(){ 
} 

@Override 
public Response toResponse(ValidationException e) { 
    message = e.getMessage(); 
    InvalidRespose invalidRespose = new InvalidRespose(code, message, field); 
    return Response.status(400).entity(invalidRespose).type(MediaType.APPLICATION_JSON).build(); 
} 
} 

Ressourcenklasse

@POST 
@Path("/increment") 
@Consumes(MediaType.APPLICATION_JSON) 
@Timed 
public Response greetings(@Valid @NotNull @Pattern(regexp = "^[1-9]\\d*$", message = "Should be a positive Number") @PathParam("id") String account_id){ 

    ... 
    ... 
} 

Ich habe meine ExceptionMapper in meinem Applicationclass registriert als

environment.jersey().register(new ConstraintViolationExceptionMapper()); 

bin ich nicht sicher, wo ich falsch werde.

Antwort

1

Ich musste die Default Mappers von Dropwizard deaktivieren, bevor ich meine eigene registrierte.

((DefaultServerFactory)rateLimitConfiguration.getServerFactory()).setRegisterDefaultExceptionMappers(false); 

Referenz-Link here

Verwandte Themen