我有一个关于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 ..例如,如果您的组件与布尔类型的属性相关联,那么JSF将选择布尔转换器。原始类型会自动转换为它们的对象。
但是当我执行上面的代码,我得到这个错误:
j_idt78: '99999999999' must be a number consisting of one or more digits.
有什么问题我的理解这个概念?为什么JSF在这种情况下不使用它的标准转换器?
事实上直接指定该字段中的转换器,'Integer'的最大值可以通过方式被确定' Integer.MAX_VALUE',它是'2147483647'。 – BalusC 2012-01-04 13:30:44
感谢您的答案。我通过将SSN设置为String来解决我的问题,但我仍然对这种情况感到好奇。您认为问题是由于输入值的大小而发生的吗?我听说convertNumber有点问题。如果我选择convertNumber,我也应该将我的SSN定义为Number,对吧? – lamostreta 2012-01-04 13:41:43
@lamostreta我实际上不确定它是否能够将其转换为超类型Number,但试试看它是否有效。你如何决定这么做是你的设计选择。就我个人而言,我选择将所有ManagedBean状态数据存储为字符串或我编写自定义转换器的数据对象。在调用我的业务逻辑层之前,我通常会在ManagedBean中进行所有String到Primitive数据类型的转换。 – 2012-01-04 13:50:54