Primefaces输入掩码仅接受十六进制

时间:2019-08-16 10:44:11

标签: javascript jsf primefaces xhtml

我将素数从6.2.5更新到7.0.4时遇到了一个可怕的问题。 在我以这种方式使用inputMask之前:

<p:inputMask id="input" value="#{bean.inputs.id}" mask="^^ ^^ ^^ ^^ ^^"
             requiredMessage="#{label.lblRequired}" >
    <f:validator validatorId="Validator"/>
</p:inputMask>

还有一个javascript部分,我定义了“ ^”的用法

$.mask.definitions['^'] = '[A-Fa-f0-9]';

使用primefaces 7.0.4时,正如您在此提交Link to primefaces github中所看到的,我不再可以使用此模式。 另外,如果我使用这种方式,则没有错误,但是值保持不变,但是在网页上它以正确的方式填充。

我的问题是,是否还有其他方法可以在输入的每个字段中添加正则表达式?还是我想念的模式

我尝试过的票价是:

  1. 添加<f:validateRegex pattern="[regex]"/>->不好
  2. 添加<p:keyFilter regEx="[regex]" />->仅在inputText上工作
  3. 试图为每个“ ^”添加正则表达式->不好

1 个答案:

答案 0 :(得分:2)

您正确的说,它已通过以下安全修补程序在PrimeFaces 7.0中被破坏:https://github.com/primefaces/primefaces/issues/3234

对修补此安全漏洞的开发人员在该线程中的注释。

  

jquery.maskedinput可让您定义自己的规则,也称为掩码   定义,例如〜可以定义为映射到+或-。例   来自https://github.com/digitalBush/jquery.maskedinput

jQuery(function($){    
   $.mask.definitions['~']='[+-]';   
   $("#eyescript").mask("~9.99 ~9.99 999"); 
}); 
  

但是,PrimeFaces似乎没有实现此功能。所以我在提交时忽略了它。

因此,您似乎应该在该故障单上注明它引起了回归问题。

更新9/2/2019 :此问题已在PF 7.0.8和7.1中修复:https://github.com/primefaces/primefaces/issues/5105