我有一个p:inputMaskp: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:0099:99的所有值。

我该如何解决?

最佳答案

p:keyFilterf:validateRegexp: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>

您可以将其关闭以显示更改消息:
<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 。此组件是针对您要在此处“入侵”的内容而制作的。

10-06 12:09