abh*_*bhi 12 validation jsf input decimal jsf-2
有没有办法确认h:inputText
JSF中的值,它只接受数字.意味着它可以是一个Integer
或者一个float
.
如果键入 12s3a562.675
, a5678s12
, 68712haf.563345
或任何其他这样的一种价值观,那么它应该显示错误.否则它接受并继续.
Bal*_*usC 19
只需将输入值绑定到一个Double
或更好的BigDecimal
属性而不是String
.
private BigDecimal number; // Double can also, but beware floating-point-gui.de
Run Code Online (Sandbox Code Playgroud)
<h:inputText value="#{bean.number}" />
Run Code Online (Sandbox Code Playgroud)
JSF 为那些将自动启动的类型构建了内置转换器.您可以自定义转换器消息,如下所示:
<h:inputText value="#{bean.number}" converterMessage="Please enter digits only." />
Run Code Online (Sandbox Code Playgroud)
das*_*ort 17
<h:inputText onkeypress="if(event.which < 48 || event.which > 57) return false;"/>
如果你只想接受整数,这是一个很短的方法.
它的优势type="number"
在于你甚至无法输入非数字
die*_*eke 10
如果你把它添加到你的xhtml
的xmlns:PE = "http://primefaces.org/ui/extensions"
并使用inputext表示名为pe:inputNumber的Primefaces Extensions 数量 ,它们不仅可验证您的数字,而且还可以更完整.
<pe:inputNumber value="#{beanTest.myValue}" thousandSeparator="" decimalSeparator="." decimalPlaces="0" />
Run Code Online (Sandbox Code Playgroud)
这对我有用
onkeypress="if( (event.which < 48 || event.which > 57) ) return false;"
Run Code Online (Sandbox Code Playgroud)
尝试
<h:inputText value="SomeValue" converter="javax.faces.Double" />
Run Code Online (Sandbox Code Playgroud)
如果您愿意使用 Primefaces,您可以将 a 附加<p:keyFilter>
到 a<h:inputText>
或<p:inputText>
。
例子:
<h:inputText id="text1" value="#{bean.intValue}" />
<p:keyFilter for="text1" mask="pint" />
<p:inputText id="text2" value="#{bean.numberValue}" >
<p:keyFilter mask="num" />
</p:inputText>
Run Code Online (Sandbox Code Playgroud)
这将阻止键盘输入以仅允许有效的整数 ( int
/ pint
) 或小数 ( num
/ pnum
) 输入。该pnum
和pint
类型只允许正输入(无需登录)。