Accept only digits for h:inputText value
Just bind the input value to a Double
, or better, BigDecimal
property instead of String
.
private BigDecimal number; // Double can also, but beware floating-point-gui.de
<h:inputText value="#{bean.number}" />
JSF has builtin converters for those types which will kick in automatically. You can customize the converter message as below:
<h:inputText value="#{bean.number}" converterMessage="Please enter digits only." />
<h:inputText onkeypress="if(event.which < 48 || event.which > 57) return false;"/>
is a short way if you want to accept integers only.
It has the advantage over type="number"
that you can't even enter a non-digit
If you add this to your xhtml
xmlns:pe="http://primefaces.org/ui/extensions"
and use the inputext for numbers of Primefaces Extensions called pe:inputNumber , which not only validate your numbers but decimals also, may be more complete.
<pe:inputNumber value="#{beanTest.myValue}" thousandSeparator="" decimalSeparator="." decimalPlaces="0" />