我有一个p:inputMask
与p:keyFilter
匹配HH:MM
如下:
<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
的所有值。
我该如何解决这个问题?
答案 0 :(得分:9)
p:keyFilter
与f:validateRegex
p:keyFilter
用于过滤字符(在每个按键上),它不允许您验证表达式(在完整的输入值上)。如果要验证输入是否与正则表达式匹配,请使用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>
您可以对其进行ajaxify以显示有关更改的消息:
<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
。这个组件是为了你在这里“破解”而制作的。