У меня такой код:
<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"
проверка сейчас не работает.
Вы знаете какой-то код для мест, который не требуется?
Я имею в виду, я хочу, чтобы пользователь ничего не писал там, где я требую.
Спасибо за чтение и прошу прощения за орфографию, но я не говорю по-английски.




Я пытался воспроизвести вашу ошибку. Насколько я понимаю, проверка работает именно так, как я планировал, когда реализовал <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. Это классический выбор меньшего из двух зол.
Не беспокойтесь о своем английском - это StackOverflow, а не Нобелевская премия по литературе :). Тем не менее, можете ли вы еще раз объяснить последние предложения? Что вы имеете в виду под словом «место»? Не стесняйтесь отвечать по-испански - я вам переведу.