JAX-RSサービスでBean検証を使用しようとしています。しかし、私は単純なパラメータの代わりにJSONオブジェクトを使ってバリデーションを行うことはできません。JAX-RSとDTOパラメータを使用したBean検証
私はこのRESTインターフェースがあります。
@Path("persons")
@Produces(MediaType.APPLICATION_JSON)
public class PersonRestService {
@EJB
private GreeterEJBLocal greeterEJB;
@POST
@Path("greet")
@Consumes(MediaType.APPLICATION_JSON)
public SayHelloRestResponse sayHello(SayHelloRestRequest sayHelloRestRequest) {
SayHelloRestResponse sayHelloRestResponse = new SayHelloRestResponse();
Person person = new Person();
person.setName(sayHelloRestRequest.person.name);
person.setEmail(sayHelloRestRequest.person.email);
SayHelloRequest sayHelloRequest = new SayHelloRequest();
sayHelloRequest.setPerson(person);
SayHelloResponse sayHelloResponse = greeterEJB.sayHello(sayHelloRestRequest.person.name, sayHelloRestRequest.person.email);
sayHelloRestResponse.setMessage(sayHelloResponse.getMessage());
return sayHelloRestResponse;
}
}
をそして、これはビーン検証アノテーションを持つ私のDTOです:
public class SayHelloRestRequest implements Serializable {
// Default serial version UID
private static final long serialVersionUID = 1L;
public Person person;
public static class Person {
@Size(min = 2, max = 5, message = "{person.name.size}")
public String name;
@Email(message = "{person.email.email}")
public String email;
}
}
私は検証のために失敗することはありませんサービスをテストしていた場合。私は間違っているのか分かりません。スクリーンショットがあり、私はあなたのメソッドのシグネチャに@Valid
を追加する必要があるサービスに
感謝そして人間のDTO。しかし、JSON形式でエラーメッセージを受け取る方法がありますか?私はそれをテキストプレーンにしています。 –
@ProviderとExceptionMapperを追加する必要があります。この章を読むことができます。https://dennis-xlc.gitbooks.io/restful-java-with-jax-rs-2-0-2rd-edition/content/en/ part1/chapter7/exception_handling.html –