Primefaces inputMask 只接受十六进制

Mof*_*fty 5 javascript xhtml jsf primefaces

我在从 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>
Run Code Online (Sandbox Code Playgroud)

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

$.mask.definitions['^'] = '[A-Fa-f0-9]';
Run Code Online (Sandbox Code Playgroud)

使用 primefaces 7.0.4 我不能再使用这种模式,正如您在此提交中看到的:Link to primefaces github。另外,如果我使用这种方式,没有错误,但值一直为空,但在网页上以正确的方式填充。

我的问题是是否还有其他方法可以向我输入的每个字段添加正则表达式?或者是否有我遗漏的模式

我试过的票价是:

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

Mel*_*are 5

您是正确的,它在 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"); 
}); 
Run Code Online (Sandbox Code Playgroud)

然而,PrimeFaces 似乎并没有实现这个功能。所以我在提交中忽略了它。

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

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