如何使用args4j验证选项?

时间:2015-07-21 11:37:47

标签: java bean-validation args4j

使用以下代码

@Option(name = "age") // min = "1"
private int age;

如何验证age字段?说必须大于零?

2 个答案:

答案 0 :(得分:2)

您可以在Option表单的方法上放置void methodName(T value)注释。 所以你可以通过以下方式轻松完成。

private int age;

@Option(name = "age")
void setAge(int age) {
    if (age < 1) {
        throw new CmdLineException("message");
    }
    this.age = age;
}

答案 1 :(得分:1)

我用bean-validation解决了自己。

一旦我注释了这些@Option

class Opts {

    @Option(name = "-buffer-capacity",
            usage = "each buffer's capacity in bytes")
    @Min(1024)
    private int bufferCapacity = 65536;

    @Option(name = "-buffer-count", required = true,
            usage = "number of buffers to allocate")
    @Min(1)
    @Max(1024)
    private int bufferCount;
}

我可以使用bean-validation验证它。

final Opts opts;
final ValidatorFactory factory
    = Validation.buildDefaultValidatorFactory();
final Validator validator = factory.getValidator();
final Set<ConstraintViolation<Opts>> violations
    = validator.validate(opts);