javascript - Primefaces inputMask 只接受十六进制

标签 javascript jsf primefaces xhtml

我在将 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 . 另外,如果我使用这种方式,没有错误,但该值一直为空,但在网页上以正确的方式填充。

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

我试过的是:

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

最佳答案

你是对的,它在 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/

相关文章:

java - JSF ConvertNumber 抛出 java.lang.IllegalArgumentException : argument type mismatch Error

java - 从 JavaScript 调用托管 bean 方法以最终填充 Primefaces 对话框组件

javascript - jQuery:避免分配不同的 id 来切换重复的元素

javascript - 如何在每次登录 Facebook 时询问电子邮件 ID 和密码?

java - JSF 页面中删除按钮中的错误

model-view-controller - 基于组件的 MVC 框架和基于 Action 的 MVC 框架

javascript - 如何使用for循环返回数组中第一次出现的重复项?

javascript - 让 VSCode 使用 JSCS 格式化规则

java - 如何将 JSF 组件绑定(bind)到支持 bean 属性

java - p :commandbutton doing the opposite of what i require