我正在使用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>
当我使用第二个(即仅限字符)时,我不能使用特殊字符。
但我的方案是允许使用字符和特殊符号。我怎么能这样做?
还有其他办法吗?
答案 0 :(得分:3)
尝试使用BalusC
的精彩技巧将其绑定到Integer属性。
<h:inputText id="number" value="#{bean.number}" />
<h:message for="number" />
在Bean类中
private Integer number;
表单不会提交,当您提交非数字时,它会显示转换错误。代码从here
如果您希望输入元素中的某些预测意味着请使用<p:inputMask />
<强>更新强>
您可以尝试以下方案
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 ....