将正则表达式与p:keyFilter一起使用 [英] Using regex with p:keyFilter
问题描述
我有一个p:inputMask
和一个p:keyFilter
来匹配HH:MM
,如下所示:
I have an p:inputMask
with a p:keyFilter
to match HH:MM
as following:
<p:inputMask id="heureDebutPlanningSalleAppareil"
value="#{beanFormPlanningSalleAppareil.planningSalleAppareil.heureDebut}"
required="true" maxlength="4" mask="99:99"
requiredMessage="Heure de début : vous devez indiquer une valeur." >
<p:keyFilter regEx="([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]"/>
</p:inputMask>
但是它不起作用,它接受从00:00
到99:99
的所有值.
But it doesn't work and it accepts all values from 00:00
to 99:99
.
我该如何解决?
推荐答案
p:keyFilter
与f:validateRegex
p:keyFilter
用于过滤字符(在每个按键上),它不允许您验证表达式(在完整的输入值上).如果要验证输入是否与正则表达式匹配,请使用f:validateRegex
.
p:keyFilter
versus f:validateRegex
p:keyFilter
is used to filter characters (on each key stroke), it does not allow you to validate an expression (on the complete inputted value). If you want to validate if your input matches a regular expression use f:validateRegex
.
所以,在您的情况下:
<p:inputMask id="heureDebutPlanningSalleAppareil"
value="#{beanFormPlanningSalleAppareil.planningSalleAppareil.heureDebut}"
required="true" maxlength="4" mask="99:99"
requiredMessage="Heure de début : vous devez indiquer une valeur.">
<f:validateRegex pattern="([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]"/>
</p:inputMask>
您可以将其更改为不显示更改消息:
You could ajaxify it to show a message on change:
<p:inputMask id="heureDebutPlanningSalleAppareil"
value="#{beanFormPlanningSalleAppareil.planningSalleAppareil.heureDebut}"
required="true" maxlength="4" mask="99:99"
requiredMessage="Heure de début : vous devez indiquer une valeur."
validatorMessage="Your message">
<f:validateRegex pattern="^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$"/>
<p:ajax process="@this" update="heureDebutPlanningSalleAppareilMsg"/>
</p:inputMask>
<p:message for="heureDebutPlanningSalleAppareil"
id="heureDebutPlanningSalleAppareilMsg"/>
针对完全不同的事物
您可以查看 pe:timePicker
.此组件是针对您要在此处入侵"的内容而制作的.
For something completely different
You could have a look at pe:timePicker
. This component is made for what you are trying to "hack" here.
这篇关于将正则表达式与p:keyFilter一起使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!