Проверка гобелена на отключенном поле - PullRequest
0 голосов
/ 28 января 2019

У меня в основном есть текстовое поле, которое может быть не пустым, поэтому я добавил эту проверку:

t:validate="required"

(у меня на самом деле есть еще несколько критериев проверки, но они здесь не актуальны).Однако это поле также иногда можно отключить (оно связано со свойством в коде Java):

t:disabled="isFieldADisabled"

Кроме того, значение связано со свойством:

t:value="entity.fieldA"

Эторазработано так, чтобы свойство никогда не было пустым, когда поле отключено.Однако, когда поле отключено, я не могу отправить форму - даже если в текстовом поле что-то отображается.Я не знаю, что здесь происходит, но затем я попытался вручную подтвердить, вот так:

@OnEvent(value = EventConstants.VALIDATE)
void onValidate(){
    if (isFieldADisabled)
        // What should I do here?
}

Как указывает мой комментарий, я не уверен, что делатьтам.В качестве дополнительного усложнения вся эта вещь заключается в container, который сам содержится в form - поэтому у меня действительно нет доступа к самой форме из метода onValidate.

IПодозреваю, что это общая проблема, если нет, дайте мне знать, нужна ли вам дополнительная информация.

РЕДАКТИРОВАТЬ Я оценил состояние текстового поля в onPrepareForSubmitFromEditForm:

Как видите, поле действительно отключено, и его значение даже не пусто.Однако в onValidateFromEditForm значение tge для disabled фактически равно false, но значение для поля все еще не пусто.

1 Ответ

0 голосов
/ 28 января 2019

Если ваш компонент находится внутри формы, вы можете использовать одну из встроенных служб среды , доступных для компонентов во время рендеринга / отправки формы, например ValidationTracker .Используя сервис, можно записывать ошибки проверки формы вручную, например ValiadationTracker#recordError(Field field, String message).

. Такие компоненты не получат событие VALIDATE по умолчанию, так как это событие вызывается на самом компоненте Form.и пузыри до его контейнеров.Это событие используется для перекрестной проверки формы, когда необходимо реализовать пользовательскую проверку для нескольких полей.Вы все еще можете использовать ValidationTracker для записи ошибок проверки.

Что касается свойства disabled AbstractField, если его значение равно true, компонент не будет участвовать впроверка, ни на стороне клиента, ни на стороне сервера:

Если true, то поле будет отображаться с отключенным атрибутом (чтобы отключить поведение на стороне клиента).Когда форма отправляется, связанное значение оценивается снова, и, если оно истинно, значение поля игнорируется (даже не проверяется) и события компонента не запускаются.

...