1

我正在使用 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>

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

但我的方案是允许字符和特殊符号。我怎样才能做到这一点?
有没有其他方法可以做到这一点?

4

1 回答 1

3

试试BalusC的一个绝妙技巧

  • 将其绑定到 Integer 属性。

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

    在 Bean 类中

    private Integer number;

    表单不会提交,提交非数字时会显示转换错误。从这里复制的代码

  • 如果您想在输入元素中进行某些预测,则意味着使用<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;
    }

它只允许整数和特殊字符....

于 2013-09-23T06:03:55.203 回答