在托管bean中,我有一个int类型的属性.
@ManagedBean
@SessionScoped
public class Nacharbeit implements Serializable {
private int number;
Run Code Online (Sandbox Code Playgroud)
在JSF页面中,我尝试仅为6位数字输入验证此属性
<h:inputText id="number"
label="Auftragsnummer"
value="#{myController.nacharbeit.number}"
required="true">
<f:validateRegex pattern="(^[1-9]{6}$)" />
</h:inputText>
Run Code Online (Sandbox Code Playgroud)
在运行时我得到一个例外:
javax.servlet.ServletException: java.lang.Integer cannot be cast to java.lang.String
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
Run Code Online (Sandbox Code Playgroud)
正则表达式错了吗?或者只是字符串的ValidateRegex?
我想将输入验证为整数.因此,应过滤具有小数部分的任何值.但我不知道如何实现这一目标.我尝试了很多东西,但是使用下面的代码,如果输入是"61.2",则值将转换为61,只是截断小数部分.但我想强制验证错误.我相信没有自定义验证器我就能做到.谢谢
<p:inputText size="5" value="#{bean.intValue}" converter="#{Integer}">
<f:convertNumber pattern="#0" integerOnly="true" maxFractionDigits="0"/>
</p:inputText>
Run Code Online (Sandbox Code Playgroud)