JSF标准转换器

时间:2012-01-04 12:20:54

标签: jsf

我有一个关于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在这种情况下不使用其标准转换器?

1 个答案:

答案 0 :(得分:4)

不完全确定,但我肯定数字99999999999太大而无法存储为整数,因此它默认将其视为字符串。

如果您将字段SSN更改为LongBigInteger,那么它可能会正常工作。 (可选)您可以通过在Primefaces标记<f:convertNumber>

中添加以下Facelets标记,直接为此字段明确指定数字转换器

http://docs.oracle.com/javaee/5/javaserverfaces/1.2/docs/tlddocs/f/convertNumber.html