java - 使用 Jersey 查询参数验证

标签 java jersey jax-rs bean-validation

我在 Java 中使用 Jersey 作为一个简单的网络服务器。我正在尝试处理 url 查询参数,比如

/path?value1=X&value2=Y&value3=Z

我能够通过使用 @QueryParam 注释来提取查询值

@GET
@Produces(MediaType.APPLICATION_XML)
@Path("/path")
public String getUpdate(@QueryParam("All") List<String> allParam, 
        @QueryParam(value = "value1") String value1, 
        @QueryParam(value = "value2") String value2, 
        @QueryParam(value = "value3") String value3) {
        ...
}

现在我的问题是我需要验证输入。我主要是想确保 value1、value2 和 value3 遵循特定格式。我还想确保这些参数不为空。

我查看了 Jersey 的 Bean 验证文档,但似乎很难理解。这可能是因为我对 Jersey 框架还是有些陌生。

那么如何设置查询参数验证呢?是否有更容易理解的资源/示例可以指导我使用?谢谢

最佳答案

作为@VA31 链接,如果您的 Jersey 足够最新,您可以像这样使用 bean 验证。

@GET
@Produces(MediaType.APPLICATION_XML)
@Path("/path")
public Response getUpdate(
    @QueryParam("value1")
    @NotNull
    @Size(min = 1, max = 255)
    @Pattern(regexp = "\\d+")
    String value1, 
    @QueryParam("value2")
    @Min(52)
    @Max(53)
    int value2, 
    @QueryParam("value3")
    @NotNull
    Integer value3) {


}

关于java - 使用 Jersey 查询参数验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32484936/

相关文章:

java - 检查@XmlElement是否有name属性

java - 使用正则表达式替换字符串中出现的所有单词

java - 发送 id 的常规方式是 @PathParam 或 @HeaderParam 或 @QueryParam?

java - JAX-RS ExceptionMapper 异常拆分

java - 是否可以使用 JAX-RS 设置 ETag 而无需求助于 Response 对象?

java - 如何使用从 Spring MVC 发回的 JSON 对象填充 jQuery 数据表的行?

java - Jersey 服务 + PrettyFaces 冲突

java - jersey2 单元测试,HttpServletRequest 为空

java - Jersey - 如果使用多态性,JSON 响应为空

java - 为什么我的程序说整数对于 Project Euler #3 (Java) 来说太大了?