我在我的堆栈中使用guice,jetty,jersey + jackson运行一个安静的应用程序。它运作得很好。
然后,我尝试添加Jersey的Bean验证,但我没有错误,没有警告......并且没有验证。我读了很多文章,但没有这些文章帮助了我。
这是我的JerseyConfigModule:
public class JerseyConfigModule extends ServletModule {
@Override
protected void configureServlets() {
Map<String, String> initParams = new HashMap<String, String>();
initParams.put("com.sun.jersey.api.json.POJOMappingFeature", "true");
bind(GuiceContainer.class);
Set<Class<?>> classes=new ResourceConfig().property(ServerProperties.BV_SEND_ERROR_IN_RESPONSE,true).getClasses();
for (Class<?> aClass : classes) {
bind(aClass);
}
serve("/rest/*").with(GuiceContainer.class, initParams);
}
}
我的泽西岛资源:
@Path("/user")
public class UserResource {
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response post(@Valid StoreUserDTO user){
}
}
在另一个Guice模块中,我绑定了这个资源:
bind(UserResource.class);
参数中使用的Bean:
public class StoreUserDTO {
@NotNull
private String name;
@NotNull
private String email;
public String getName() {
return name;
}
public String getEmail() {
return email;
}
}
我使用jersey-guice和glassfish的泽西豆验证(我想要这个):
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-guice</artifactId>
<version>1.19</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-bean-validation</artifactId>
<version>2.22.1</version>
</dependency>
我忘记了什么?我发现很多例子都没有用,或者不适用于泽西岛2,仅仅是1。
是的,我知道Jersey正式支持bean验证,但在官方文档中,我没有找到任何关于如何与Guice集成的信息。