JSF编号验证

时间:2011-11-16 08:27:34

标签: jsf

JSF中是否有任何内置的数字验证器标签,用于检查在h:inputext字段中输入的输入是否为数字?

第一个问题得到了解答。编辑解释下一个问题:

<h:inputText id="maxrecs" value="#{simpleBean.numRecords}" required="false" maxlength="4" >                         
    <f:convertNumber longOnly="true"/>
</h:inputText>

支持Bean

private long numRecords = null;

如果我在辅助bean中使用String或Integer对象,则不会设置值。现在当我使用原始int时,屏幕上会打印出0。我想屏幕是空的。

5 个答案:

答案 0 :(得分:40)

您可以使用f:convertNumber(使用integerOnly属性)。

您可以获得更多信息here

答案 1 :(得分:10)

您可以使用:

 <f:validateLongRange minimum="20" maximum="1000" />

最小值是允许的最小值,最大值是最大值。 Look here for more details

答案 2 :(得分:7)

inputtext的JSF Number验证 在f inputText组件之间提及f:converterNumber组件并提及属性integerOnly和type。

<h:inputText id="textMobileId" label="Mobile" styleClass="controlfont" value="#{UserRegistrationBean.textMobile}">
    <f:convertNumber integerOnly="true" type="number" />
</h:inputText>

如果您在单击命令按钮时在移动文本框中输入abcd,它会自动显示错误,如

Mobile: 'abcd' is not a number. 

答案 3 :(得分:3)

i8taken解决方案将数字转换为long而不进行验证消息(至少在我的情况下:每页JSF2 /全局消息)。要获得正确的验证消息,您可以 1.检查bean中action方法的值;

2.对inputText使用converter属性:

  

<h:inputText id="maxrecs" value="#{simpleBean.numRecords}" maxlength="4" converter="javax.faces.Integer" />

答案 4 :(得分:-1)

您可以简单地使用passthrough,因此首先添加此库

    xmlns:pt="http://xmlns.jcp.org/jsf/passthrough"

使用后

   <h:inputText id="numberId" pt:type="number" />