我在将 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>
还有一个 javascript 部分,我在其中定义了“^”的用法
$.mask.definitions['^'] = '[A-Fa-f0-9]';
在 primefaces 7.0.4 中我不能再使用这个模式了,你可以在这个提交中看到:Link to primefaces github . 另外,如果我使用这种方式,没有错误,但该值一直为空,但在网页上以正确的方式填充。
我的问题是是否有任何其他方法可以将正则表达式添加到我输入的每个字段?或者有没有我遗漏的模式
我试过的是:
- 添加
<f:validateRegex pattern="[regex]"/>
--> 不好 - 添加
<p:keyFilter regEx="[regex]" />
--> 只处理 inputText - 尝试为每个“^”添加正则表达式 --> 不好
最佳答案
你是对的,它在 PrimeFaces 7.0 中被这个安全修复程序破坏了:https://github.com/primefaces/primefaces/issues/3234
修补此安全漏洞的开发人员在该线程中发表评论。
jquery.maskedinput lets you define your own rules aka mask definitions, e.g. ~ can be defined to be mapped to + or -. Example from https://github.com/digitalBush/jquery.maskedinput
jQuery(function($){
$.mask.definitions['~']='[+-]';
$("#eyescript").mask("~9.99 ~9.99 999");
});
However, PrimeFaces does not seem to implement this feature. So I ignored it in my commit.
看来您应该对该错误单发表评论,说它导致了回归问题。
2019 年 9 月 2 日更新:已针对 PF 7.0.8 和 7.1 修复此问题:https://github.com/primefaces/primefaces/issues/5105
关于javascript - Primefaces inputMask 只接受十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57523231/