F: validateRegex для ненужного inputText это возможно?

У меня такой код:

<b:inputText id = "txtBuscarPorCodigo" 
      placeholder = "123456-78-90123" 
      col-sm = "6" 
      required = "true" 
      requiredMessage = "Es necesario este dato de la manera en la que se indica"
      rendered = "#{miControlador.buscarPor == 'codigo'}"
      value = "#{miControlador.miBean.codigo}" 
      label = "Código:" >
          <f:validateRegex id = "validateRegex" 
                pattern = "^([0-9]{4}-[0-9]{2}-[0-9]{5})$" />
</b:inputText>

И это работает ... НО. Если я удалю следующие строки:

required = "true" 
requiredMessage = "Es necesario este dato de la manera en la que se indica"

проверка сейчас не работает.

Вы знаете какой-то код для мест, который не требуется?

Я имею в виду, я хочу, чтобы пользователь ничего не писал там, где я требую.

Спасибо за чтение и прошу прощения за орфографию, но я не говорю по-английски.

Не беспокойтесь о своем английском - это StackOverflow, а не Нобелевская премия по литературе :). Тем не менее, можете ли вы еще раз объяснить последние предложения? Что вы имеете в виду под словом «место»? Не стесняйтесь отвечать по-испански - я вам переведу.

Stephan Rauh 15.08.2018 22:10
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
685
1

Ответы 1

Я пытался воспроизвести вашу ошибку. Насколько я понимаю, проверка работает именно так, как я планировал, когда реализовал <b:inputText />.

Чтобы избежать недоразумений, я загрузил репродуктор на GitHub. Это часть нашей витрины BootsFaces. Если вы знакомы с Maven, вы должны запустить его через несколько минут. Это коммит, содержащий репродуктор: https://github.com/TheCoder4eu/BootsFacesWeb/commit/4633fce03e8984005ae6c0698ade97e5da8d65e8

Так что, я полагаю, ошибки нет. Но, может быть, тут простое недоразумение. <f:validateRegex /> всегда проверяется, независимо от того, есть вход или нет. Если я вас правильно понял, вы хотите проверять регулярное выражение только в том случае, если ввод не пустой.

В этом случае мой подход состоит в том, чтобы включить пустую строку в регулярное выражение, например:

<f:validateRegex pattern = "^([0-9]{4}-[0-9]{2}-[0-9]{5})?$" />

(Обратите внимание на вопросительный знак!)

Просто для полноты: мне интересно, игнорирует ли стандартная реализация <f:validateRegex /> пустую строку. Если да, должны ли мы изменить нашу реализацию? Я так не думаю, потому что это означало бы нарушение обратной совместимости со старыми версиями BootsFaces. Это классический выбор меньшего из двух зол.

Stephan Rauh 17.08.2018 23:28

Другие вопросы по теме