как сделать валидацию форм scala play для поля с разными ошибками

Я пытаюсь добавить некоторую проверку в нашу форму для поля. Это первая проверка ниже. На данный момент, даже если он не проходит новую проверку, он затем проверяет оставшуюся часть .verifying и возвращает несколько сообщений об ошибках. Если поле не проходит мою новую проверку, я бы хотел, чтобы оно не выполняло все остальные проверки и просто возвращалось. Итак, в основном, если мое поле соответствует регулярному выражению для временного поля, я хочу, чтобы оно возвращало сообщение об ошибке, не продолжая остальную часть проверки.

val form = Form(
mapping(
  "my_field" -> text
    .verifying(Messages("error.field.temporary"), x => x.matches(TEMP_FIELD))
    .verifying(Messages("error.mandatory", Messages("field")), _.length > 0)
    .verifying(Messages("error.field.invalid"), x => x.length == 0 || MyField.isValid(x.toUpperCase()))
    .verifying(Messages("error.field.invalid"), x => !MyField.isValid(x.toUpperCase()) || x.takeRight(1).toUpperCase().matches(FIELD_SUFFIX_REGEX))))
(MemberDetails.apply)(MemberDetails.unapply))

Любая помощь приветствуется.


person user1584120    schedule 21.12.2015    source источник
comment
Каковы недостатки выполнения дополнительных проверок? Возникают ли значительные расходы при использовании MyField.isValid метода?   -  person josephpconley    schedule 21.12.2015
comment
нет, но вы получаете более одного сообщения об ошибке, тогда как вы должны получить только одно.   -  person user1584120    schedule 22.12.2015


Ответы (1)


Я решил это с помощью ограничения. Хорошая информация доступна здесь: https://www.playframework.com/documentation/2.4.x/ScalaCustomValidations

person user1584120    schedule 22.12.2015