動作確認ができません。私は春のブートアプリケーションの一部であるこの簡単なエンドポイントがあります。@ValidがSpringブートを使用してJAX-RSで動作しない
@Getter
@Setter
@JsonInclude(JsonInclude.Include.NON_NULL)
public class UserDTO {
private Long id;
// redundant validations, for testing
@NotNull
@Size(min = 5, max = 80, message = "First name too short")
@NotBlank(message = "First name blank")
@NotEmpty(message = "First name empty")
private String firstName;
@NotNull
@Size(min = 2, max = 80, message = "Last name too short")
private String lastName;
@NotNull
private String email;
}
をそして、それは常にさえ空のフィールドで、すべての要求を処理します。そして、
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response create(@Valid UserDTO userDTO, @Context UriInfo uriInfo) {
User user = UserParser.parse(userDTO);
userService.save(user);
final URI uri = uriInfo.getAbsolutePathBuilder().path(String.valueOf(user.getId())).build();
return Response.created(uri).build();
}
を、UserDTO検証します。私も問題はDTO
@Path("/validator/{testInt}")
@GET
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public String validator(@Valid @Min(value = 30, message = "testInt too small") @PathParam("testInt") Integer testInt) {
return String.valueOf(testInt);
}
内の検証を持っていたかどうかを確認するための試験のエンドポイントを作成した。しかし、それはそれは喜んで任意のは、それが受け取るint型を返し、どちらか動作しません。
[INFO] +- org.glassfish.jersey.ext:jersey-bean-validation:jar:2.22.1:compile
[INFO] | +- org.glassfish.hk2.external:javax.inject:jar:2.4.0-b31:compile
[INFO] | +- javax.validation:validation-api:jar:1.1.0.Final:compile
[INFO] | +- org.hibernate:hibernate-validator:jar:5.2.2.Final:compile
[INFO] | | +- org.jboss.logging:jboss-logging:jar:3.3.0.Final:compile
[INFO] | | \- com.fasterxml:classmate:jar:1.1.0:compile
[INFO] | +- javax.el:javax.el-api:jar:2.2.4:compile
[INFO] | \- org.glassfish.web:javax.el:jar:2.2.4:compile
私もHibernateValidator
内のブレークポイントを設定し、その方法の二つが呼び出されることがわかりましたので、以下のようになります場合は、私のエンドポイントが@Service
であり、ここでは私のMavenの依存関係ツリーの関連部分である、重要それは実行されています。ただ検証しない。
EDIT:私のジャージ構成
public class JerseyConfig extends ResourceConfig {
public JerseyConfig() {
register(RequestContextFilter.class);
register(LoggingFilter.class);
register(JacksonFeature.class);
packages("com");
}
}
に次の設定を追加しますが、それは事件のように見えません。しかし、そうであれば、 'ValidationFeature'をJerseyに明示的に登録することができます。既に動作していて、期待する応答ではない場合は、レポートの動作を設定する必要があります。 Jerseyでは 'ServerProperties.BV_SEND_ERROR_IN_RESPONSE'プロパティをtrueに設定します。それ以外のものは、あなたが提供したものだけで、単に動作しないという振る舞いを再現することはできません。 –