Primefaces inputMask只接受十六进制



我在将素数从 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中,我不能再使用这种模式了,正如你在这个提交中看到的那样:链接到primefaces github。 另外,如果我使用这种方式,则没有错误,但该值一直为空,但在网页上它以正确的方式填充。

我的问题是,是否有其他方法可以将正则表达式添加到我输入的每个字段?还是我缺少一种模式

我尝试过的票价是:

  1. 添加<f:validateRegex pattern="[regex]"/>-->不好
  2. 添加<p:keyFilter regEx="[regex]" />--> 仅适用于输入文本
  3. 尝试为每个"^"添加正则表达式 -->不好

您是正确的,它在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似乎没有实现此功能。所以我在我的提交中忽略了它。

因此,您似乎应该对该错误票发表评论,说它导致了回归问题。

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

最新更新