如何设置<p:inputtext>字段以接受jsf </p:inputtext>中的数字和特殊字符

时间:2013-09-23 05:50:28

标签: jsf primefaces

我正在使用Java Server Faces和Primefaces。我的要求之一是,不要只允许输入文本字段中的数字(这意味着允许字符和特殊符号)。 我只能通过

来允许这个号码
<p:inputText value="#{doctorindBean.age}" id="age" tabindex="2" maxlength="30">
    <pe:keyFilter mask="num"></pe:keyFilter>
</p:inputText>

仅限字符

<p:inputText value="#{doctorindBean.doclastname}" id="lastname" tabindex="2" maxlength="30">
        <pe:keyFilter mask="alpha"></pe:keyFilter>
    </p:inputText>

当我使用第二个(即仅限字符)时,我不能使用特殊字符。

但我的方案是允许使用字符和特殊符号。我怎么能这样做?
还有其他办法吗?

1 个答案:

答案 0 :(得分:3)

尝试使用BalusC

的精彩技巧
  • 将其绑定到Integer属性。

      <h:inputText id="number" value="#{bean.number}" />
      <h:message for="number" />
    

    在Bean类中

    private Integer number;

    表单不会提交,当您提交非数字时,它会显示转换错误。代码从here

  • 复制
  • 如果您希望输入元素中的某些预测意味着请使用<p:inputMask />

<强>更新

  • 如果要在文本字段中允许特殊字符,请将文本存储为字符串和 解析Bean类中的一些验证

您可以尝试以下方案

 public String setNumber(String number)
    {
        for(int i=0;i<mobile.length();i++)
    {
        if((int)number.charAt(i)>65 && (int)number.charAt(i)<90 || (int)number.charAt(i)>97 && (int)number.charAt(i)<122)
        {
            throw new NumberFormatException("Exception"); //Throwing manual exception
        }
    }
      this.number=number;
    }

它只允许Integer和Special Charactor ....