JCommander验证列表项

时间:2018-05-04 09:41:40

标签: validation listitem jcommander

我正在使用JCommander v.1.72,我的目标是在参数中获得(逗号分隔的)字符串列表并验证单个字符串。听起来很简单,对吧?

这是我的代码:

@Parameter(names = { "-sort", "-s" }, validateWith = ParameterValidatorHeader.class)
private List<String> sort = new ArrayList<String>();

我用这个命令运行程序:

-sort column1,column2

我预计JCommander会在分割单个项目后调用验证器,即验证“column1”,验证“column2”。 但显然字符串“column1,column2”在拆分参数值之前被发送到验证器类。

如何实现对单个项目进行验证? (当然,我可以用纯Java 进行验证用JCommander解析它们之后......)

由于 埃里希

1 个答案:

答案 0 :(得分:-1)

您不能,至少不使用JCommander,文档对此很清楚

4.2 Global parameter validation

  

使用JCommander解析参数后,您可能希望对这些参数执行其他验证,例如确保未同时指定两个互斥的参数。 由于这种验证涉及所有潜在的组合,因此JCommander不提供任何基于注释的解决方案来执行此验证,因为这种方法必然会受到Java注释的本质的限制。您只需在Java中对JCommander刚刚解析的所有参数执行此验证。