JCommander подтверждает элемент списка - PullRequest
0 голосов
/ 04 мая 2018

Я использую 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 голосов
/ 14 января 2019

Вы не можете, по крайней мере, не используя JCommander, документы совершенно ясны по этому вопросу

4.2 Глобальная проверка параметров

После анализа ваших параметров с помощью JCommander вы можете выполнить дополнительную проверку этих параметров, например убедиться, что два взаимоисключающих параметра не указаны одновременно. Из-за всех возможных комбинаций, связанных с такой проверкой, JCommander не предоставляет никакого решения на основе аннотаций для выполнения этой проверки, потому что такой подход обязательно будет очень ограничен самой природой аннотаций Java. Вместо этого вы следует просто выполнить эту проверку в Java для всех аргументов, которые JCommander только что проанализировал.

...