Reputation: 7792
I need to define something similar to this regex:
[0-9]{1, 5}
On a PrimeFaces <inputMask>
element:
<p:inputMask mask="regexGoesHere" value="#{someBean.val}"/>
I looked at the PrimeFaces showcase, but I couldn't figure out how to do it.
So does anyone know how to do it in any way besides JavaScript ?
I'm not exactly looking for a solution with <inputMask>
anything that would restrict me from typing letters in the input on the client side is OK.
Thanks
Upvotes: 12
Views: 69359
Reputation: 1311
If you want or need to limit the length too, you could do something like this:
<p:inputMask
mask="9?9999"
maxlength="5"
slotChar=" "
value="#{someBean.val}" />
where the user can only enter 1 to 5 digits, or the following for four digits and so on
<p:inputMask
mask="9?999"
maxlength="4"
slotChar=" "
value="#{someBean.val}" />
Prior to PrimeFaces 5.1: use placeHolder
instead of slotChar
(Issue 7324).
Upvotes: 29
Reputation: 37061
The following Masked Input Plugin is the original jquery plugin that is being used by Primefaces , you can find much more information about its usage, also there are several p:input-mask code example in this PDF PrimeFaces: More Input Elements look at page 24
Upvotes: 6
Reputation: 693
just try this :
<p:inputMask maxlength="5">
<pe:keyFilter regEx="/[\d]/" />
</p:inputMask>
maxlength : limit the number of caracters to 5 max regEx : only authorize decimal caracter on key press
nb:
Upvotes: 1
Reputation: 22847
KeyFilter from PrimeFaces Extensions looks exactly as something you need: http://fractalsoft.net/primeext-showcase-mojarra/views/keyFilter.jsf
According to documentation and example, it is driven by regexp, and functions exactly as it should: blocking the ability to type something not passing to the regexp.
Upvotes: 3
Reputation: 2003
You could use a validator. Or the validaterange and define a minimum and maximum.
Upvotes: 0