You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Javax Validation注解限制User类percent字段仅允许指定值?

使用Javax Validation现有注解校验Integer字段的离散值

如果不想自定义校验器,你可以用Javax Validation自带的**@AssertTrue**注解,配合类内的校验方法来实现需求,全程不用额外写自定义约束或校验器。

修改后的User类代码如下:

import javax.validation.constraints.AssertTrue;

class User {

    private String name;

    private Integer percent;

    @AssertTrue(message = "percent只能是10、50、80、100中的一个")
    public boolean isPercentValid() {
        // 允许percent为null的情况,若不允许则去掉`percent == null ||`
        return percent == null || java.util.Arrays.asList(10, 50, 80, 100).contains(percent);
    }
}

说明

  • @AssertTrue会校验标注的方法返回值是否为true,方法名要符合JavaBean规范(比如这里用isXXX格式)
  • 方法里的逻辑很直接:要么percent是null(如果业务允许的话),要么属于指定的四个有效值之一
  • 可以通过message属性自定义校验失败时的提示文本

如果你的业务要求percent字段不允许为null,只需再加上**@NotNull**注解即可:

import javax.validation.constraints.AssertTrue;
import javax.validation.constraints.NotNull;

class User {

    private String name;

    @NotNull(message = "percent不能为空")
    private Integer percent;

    @AssertTrue(message = "percent只能是10、50、80、100中的一个")
    public boolean isPercentValid() {
        return java.util.Arrays.asList(10, 50, 80, 100).contains(percent);
    }
}

这种方式完全基于Javax Validation的标准注解实现,不需要额外自定义组件,刚好满足你的需求。

内容的提问来源于stack exchange,提问作者Shubham Palkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 23:35:30