小编Jas*_*lio的帖子

自动级联bean-validation递归验证,@ Valid注释

我正在验证Jersey中REST资源端点中的POJO:

public class Resource {
    @POST
    public Response post(@NotNull @Valid final POJO pojo) {
        ...
    }
}

public class POJO {
    @NotNull
    protected final String name;

    @NotNull
    @Valid
    protected final POJOInner inner;

    ...
}

public class POJOInner {
    @Min(0)
    protected final int limit;

    ...
}
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常.

但是,@Min(0)仅当字段inner具有@Valid注释时才会验证注释.将@Valid注释添加到不是基元的每个字段是不正确的.

有没有办法告诉bean验证器自动递归继续验证,即使没有@Valid注释?我希望我POJO如下:

public class POJO {
    @NotNull
    protected final String name;

    @NotNull
    protected final POJOInner inner;

    ...
}
Run Code Online (Sandbox Code Playgroud)

java jax-rs jersey bean-validation

35
推荐指数
1
解决办法
8092
查看次数

使用Jersey在运行时确定同步或异步响应

是否可以在运行时决定是否应同步或异步处理对资源端点的Jersey REST请求?我们举一个简单的例子.

同步版本:

@Path("resource")
public class Resource {
    @GET
    @Produces({MediaType.TEXT_PLAIN})
    public Response get() {
        return Response.ok("Hello there!").build();
    }
}
Run Code Online (Sandbox Code Playgroud)

异步版本:

@Path("resource")
public class Resource {
    @GET
    @Produces({MediaType.TEXT_PLAIN})
    public void get(@Suspended final AsyncResponse r) {
        r.resume(Response.ok("Hello there!").build()); // usually called somewhere from another thread
    }
}
Run Code Online (Sandbox Code Playgroud)

根据某些参数,我想在运行时决定是应该同步还是异步处理GET请求.http://server/resource在两种情况下,资源endpoint()的URL 必须相同.这可能吗?

当然,正如您在上面的示例中所看到的,同步版本可以通过简单调用以异步方式伪造AsyncResponse.resume(...).但是,我会避免创建异步响应的开销.

java rest asynchronous jersey

5
推荐指数
1
解决办法
929
查看次数

java/beans validation - collection/map不包含空值

有一个@NotNull注释可以验证某个对象不为null.

有一个@NotEmpty注释可以验证某个集合/ map/string/...不是空的.

是否还有一个注释,表明某个集合/映射不包含任何空值?我无法找到它.它看起来很基本,我相信它必须符合JSR-303规范.

java null bean-validation notnull

2
推荐指数
2
解决办法
3061
查看次数

标签 统计

java ×3

bean-validation ×2

jersey ×2

asynchronous ×1

jax-rs ×1

notnull ×1

null ×1

rest ×1