Наблюдаемое значение в проверке - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть следующий код

  public ValidationResult notNull(Control control, String content) {
        boolean condition = content.length() <=0;
        return ValidationResult.fromMessageIf(control, "Field is empty!", Severity.WARNING, condition);
    }

, он проверяет, есть ли какой-либо символ в текстовом поле,

, когда я называю его так

validator = new ValidationSupport();

validator.registerValidator(itemIdTf,vals::notNull);

инаконец, это сделать

validator.invalidProperty().addListener((observable, oldValue, newValue) -> {
            itemIdTf.pseudoClassStateChanged(PseudoClass.getPseudoClass("negative"), oldValue);});

И это работает, он устанавливает псевдокласс для определенного элемента управления, однако, когда у меня несколько элементов управления текстовым полем на одном и том же элементе проверки, он должен ждать проверки всех из них перед изменением.псевдокласс.

, поэтому я подумал, возможно, сделать это в методе ValidationResult, потому что я думаю, что использование многих валидаторов, вероятно, не очень хорошо.Как бы то ни было, я не знаю, возможно ли это, мне нужен слушатель, уникальный для каждого элемента управления, а не для результата проверки.

1 Ответ

0 голосов
/ 04 апреля 2019

хорошо, я нашел что-то, что работает, но это все еще оставляет некоторые вопросы без ответа:

  public ValidationResult notNull(Control control, String content) {



        boolean condition = content.length() <=0;

      control.pseudoClassStateChanged(positive,!condition);

        return ValidationResult.fromMessageIf(control, "Field is empty!", Severity.ERROR, condition);
    }

Я использую валидатор CSS, поэтому вещи, которые приходят из этой строки, не работают (по крайней мере, не всеиз них)

return ValidationResult.fromMessageIf(control, "Field is empty!", Severity.ERROR, bp.getValue());

Здесь выше есть строка «Поле пусто», которая должна быть всплывающей подсказкой для элемента управления, однако она никогда не устанавливается, поэтому я просто создал собственную подсказку внутри проверки и добавляю ее в элемент управления.

тогда все выглядит примерно так:

PseudoClass positive = PseudoClass.getPseudoClass("positive");
    final Tooltip notNullTooltip = new Tooltip("Must have some value");
      public ValidationResult notNull(Control control, String content) {

            boolean condition = content.length() <=0;

          control.pseudoClassStateChanged(positive,!condition);
          control.setTooltip(notNullTooltip);
            return ValidationResult.fromMessageIf(control, "Field is empty!", Severity.ERROR, condition);
        }

И это работает, если у кого-то есть более элегантное решение, я был бы благодарен.

...