【发布时间】:2017-07-03 21:23:39
【问题描述】:
我有一个 dropwizard 1.0.6 应用程序。我想把所有的 JAX-RS 和验证注解放在一个接口上,然后注册我的资源来实现这个接口,类似于:
@Path("/user")
@Produces(MediaType.APPLICATION_JSON)
public interface UserEndpoint {
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
Response createUser(
@FormParam("username") @NotEmpty @Email String username,
@FormParam("password") @Size(min=4) String password);
}
和相应的资源:
public class UserResource implements UserEndpoint {
public Response createUser(String username, String password) {
//my logic here
}
}
这非常有效,除了错误响应中的验证消息,它变成了:
createUser.arg0 not a well-formed email address
虽然我希望他们是:
form field username not a well-formed email address
更新:
如果我将 JAX-RS 和验证注释直接添加到UserResource,那么验证消息就是我所期望的:它报告@FormParam 注释中指定的参数名称。这是我想要实现的,但在界面中有注释。
【问题讨论】:
-
所以当您不使用界面时会收到所需的消息?
-
是的,完全正确。我想要的消息是如果我不使用接口并且所有注释都在资源上的消息。
标签: java jersey jax-rs bean-validation dropwizard