在p:inputMask上使用带有p:keyFilter的正则表达式

Ich*_*aki 2 regex jsf primefaces

我有一个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>
Run Code Online (Sandbox Code Playgroud)

但它不工作,它接受来自所有值00:0099:99.

我怎么解决这个问题?

Jas*_*ies 10

p:keyFilterf: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>
Run Code Online (Sandbox Code Playgroud)

您可以将其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"/>
Run Code Online (Sandbox Code Playgroud)

对于完全不同的东西

你可以看看pe:timePicker.此组件是为您在此处"破解"而制作的.