有没有办法确认h:inputText
JSF 中的值,它应该只接受数字。表示它可以是 anInteger
或float
.
如果我键入 12s3a562.675
, 或任何其他此类值,则它应该显示错误a5678s12
。 68712haf.563345
否则它接受并继续。
有没有办法确认h:inputText
JSF 中的值,它应该只接受数字。表示它可以是 anInteger
或float
.
如果我键入 12s3a562.675
, 或任何其他此类值,则它应该显示错误a5678s12
。 68712haf.563345
否则它接受并继续。
<h:inputText onkeypress="if(event.which < 48 || event.which > 57) return false;"/>
如果您只想接受整数,这是一种捷径。
它的优势type="number"
在于您甚至无法输入非数字
只需将输入值绑定到一个Double
或更好的BigDecimal
属性而不是String
.
private BigDecimal number; // Double can also, but beware floating-point-gui.de
<h:inputText value="#{bean.number}" />
JSF为那些将自动启动的类型内置了转换器。您可以自定义转换器消息,如下所示:
<h:inputText value="#{bean.number}" converterMessage="Please enter digits only." />
如果你把它添加到你的 xhtml
xmlns:pe="http://primefaces.org/ui/extensions"
并将 inputext 用于称为pe:inputNumber的 Primefaces Extensions 的数字 ,它不仅可以验证您的数字,还可以验证小数,可能更完整。
<pe:inputNumber value="#{beanTest.myValue}" thousandSeparator="" decimalSeparator="." decimalPlaces="0" />
如果您愿意使用 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>
这将阻止键盘输入以仅允许有效的整数 ( int
/ pint
) 或小数 ( num
/ pnum
) 输入。pnum
and类型只允许正pint
输入(无符号)。
尝试
<h:inputText value="SomeValue" converter="javax.faces.Double" />
这对我有用
onkeypress="if( (event.which < 48 || event.which > 57) ) return false;"
以下是一些不同的选项:
@Digits
from bean 验证。<input type="number" />
我认为最好的选择是使用Bean 验证、f:convertNumber或使用HTML5,因为这些是最干净的,并且给你的冗余代码最少。
您可以使用 JS 验证
首先,您需要定义一个 JS 函数来验证输入
function validateInput(regexString) {
var theEvent = window.event || event;
var key = theEvent.keyCode || theEvent.which;
if (key >= 46) {
key = String.fromCharCode(key);
var regex = new RegExp("^" + regexString + "$");
if (!regex.test(key)) {
theEvent.returnValue = false;
if (theEvent.preventDefault) {
theEvent.preventDefault();
}
}
}
}
其次,在您的 h:input 中,捕获 onKeyPress 事件并调用该函数
<h:inputText value="..." onKeyPress="validateInput('[0-9]*')/>
它只会让你输入数字。
当您需要验证其他正则表达式时,您可以轻松将此用途扩展到其他情况。
请注意,这仅适用于按键,如果您想捕获其他用户事件,请使用正确的标签。
干杯
如果您只是在寻找整数值,则可以使用 JSF 2.2直通属性来使用如下输入type="number"
:
<html xmlns:a="http://xmlns.jcp.org/jsf/passthrough">
<h:inputText a:type="number" value="#{bean.integer}" />
您现在可以使用 PrimeFaces Extension 而不是!
https://www.primefaces.org/showcase/ui/input/inputNumber.xhtml
尝试这个
<h:inputText>
<f:validateRegex pattern="\d*(.\d+)?"/>
</h:inputText>