validation - 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”在拆分参数值之前被发送到验证器类。
我怎样才能实现对单个项目的验证呢?(当然,在用 JCommander 解析它们之后,我可以用纯 Java 进行验证......)
谢谢埃里希
解决方案
您不能,至少不使用 JCommander,文档对此非常清楚
使用 JCommander 解析参数后,您可能希望对这些参数执行额外的验证,例如确保两个互斥的参数没有同时指定。由于此类验证涉及所有潜在的组合,JCommander 不提供任何基于注释的解决方案来执行此验证,因为这种方法必然会受到 Java 注释的本质的限制。相反,您应该简单地在 Java 中对 JCommander 刚刚解析的所有参数执行此验证。
推荐阅读
- javascript - Mapbox JS:更改特征属性的有效且简单的方法
- layout - 双向绑定时,灵活的列布局不起作用
- java - 如何在使用 rs.getString 时修复“终止”
- javascript - 向 Mongo 发送并行请求并在所有请求完成后继续
- java - 如何在不知道 Java 维度的情况下转换多维数组
- mysql - MySQL 默认值作为表达式是错误的
- r - 如何使用 R 获取用特殊字符编写的 Excel 工作表的名称?
- python - sqlalchemy 输出到排序字典
- c# - 如何通过 C# 在 ElasticSearch 中区分一个字段(在搜索结果中有多个重复项)?
- ruby-on-rails-5 - 在进行 Rails 实体查询时如何包含 has_many 关系?