我有一个关于JSF转换的问题。我有一个输入文本定义如下:
<p:inputText size="15" maxlength="11" value="#{user.SSN}"/>
支持bean:
private Integer SSN;
从这个网站: http://laliluna.com/articles/posts/javaserver-faces-converter-tutorial.html
据我所知,JSF内置了整数转换器。
“如果您没有指定转换器,JSF将为您选择一个。框架具有适用于所有基本类型的标准转换器:Long,Byte,Integer,Short,Character,Double, Float,BigDecimal,BigInteger和Boolean ..例如,如果组件与boolean类型的属性相关联,JSF将选择布尔转换器。原始类型会自动转换为对象类型。“
但是当我执行上面的代码时,我收到了这个错误:
j_idt78: '99999999999' must be a number consisting of one or more digits.
我理解这个概念有什么问题?为什么JSF在这种情况下不使用其标准转换器?
答案 0 :(得分:4)
不完全确定,但我肯定数字99999999999太大而无法存储为整数,因此它默认将其视为字符串。
如果您将字段SSN更改为Long
或BigInteger
,那么它可能会正常工作。 (可选)您可以通过在Primefaces标记<f:convertNumber>
http://docs.oracle.com/javaee/5/javaserverfaces/1.2/docs/tlddocs/f/convertNumber.html