将正则表达式与p:keyFilter一起使用 [英] Using regex with p:keyFilter

查看:167
本文介绍了将正则表达式与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:0099:99的所有值.

But it doesn't work and it accepts all values from 00:00 to 99:99.

我该如何解决?

推荐答案

p:keyFilterf: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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆