<h:inputText id="num1" label="num1" required="true" size="5" maxlength="5"
styleClass="#{component.valid ? '' : 'validation-failed'}"
value="#{sumaManagedBean.number1}"
requiredMessage="You must enter a value">
<f:validator validatorId="validators.NumberValidator"/>
</h:inputText>
<h:message for="num1" />
@ManagedBean
@SessionScoped
public class SumaManagedBean implements Serializable
{
int number1;
public SumaManagedBean() {
}
//Getters and Setters
public int getNumber1() {
return number1;
}
public void setNumber1(int number1) {
this.number1 = number1;
}
//Methods
}
验证器
@FacesValidator("validators.NumberValidator")
public class NumberValidator implements Validator
{
private static final String NUMBER_PATTERN = "[0-9]{1,5}";
private Pattern pattern;
private Matcher matcher;
public NumberValidator()
{
pattern = Pattern.compile(NUMBER_PATTERN);
}
@Override
public void validate(FacesContext context, UIComponent component,Object value) throws ValidatorException
{
String number = value.toString();
//Only numeric characters
matcher = pattern.matcher(value.toString());
if(!matcher.matches())
{
FacesMessage msg = new FacesMessage("Only numeric characters");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ValidatorException(msg);
}
//Minimum length 2 numbers
else if((number.length() < 2))
{
FacesMessage msg = new FacesMessage("Minimum length 2 numbers");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ValidatorException(msg);
}
}
}
当我插入一位数字时,验证器工作正常,并显示消息“最小长度2数字”。但是,当我插入一些字母而不是像“EEE3”这样的数字时,验证器会显示以下消息:“num1:'EEE3'必须是一个介于-2147483648和2147483647之间的数字。例如:9346”,而它应该显示“仅数字字符”。
我做错了什么?
但是当我插入一些字母而不是像“eee3”这样的数字时,验证器会显示以下消息:“num1:'eee3'必须是一个介于-2147483648和2147483647之间的数字。示例:9346”
这是JSF builtinIntegerConverter
的默认转换错误消息。当您将输入字段绑定到类型为integer
或其基本对应项int
的bean属性时,它将透明地发挥作用。JSF转换器将在JSF验证器之前运行。在任何转换错误时,验证器都不会运行。换句话说,您根本不需要根据数值regex模式进行验证。
可以通过convertermessage
属性自定义转换器消息。
<h:inputText value="#{bean.integer}" ... converterMessage="Only numeric characters" />
此外,长度(范围)验证也可以通过JSF builtin
来完成。
<h:inputText value="#{bean.integer}">
<f:validateLongRange minimum="10" maximum="99999" />
</h:inputText>
它的验证器消息可以通过validatormessage
属性自定义。总而言之,您的输入组件可以具有如下所示的基本部分,而无需任何自定义验证器:
<h:inputText value="#{bean.integer}" maxlength="5" required="true"
requiredMessage="You must enter a value"
converterMessage="Only numeric characters"
validatorMessage="Minimum length 2 numbers">
<f:validateLongRange minimum="10" maximum="99999" />
</h:inputText>
与具体问题无关,在验证器
中执行value.tostring()
是不好的做法。别那么做。您应该将提供的value参数强制转换为模型中声明的实际类型(bean属性)。然后您很快就会意识到验证的某些部分是不必要的。
Integer number = (Integer) value;
而且,matcher
实例不是线程安全的。您不应该将它声明为类的实例变量,该类的实例可以跨多个线程共享。
我是JAVA的新手,文本字段是否可以只接受数字输入?是否也有可能在代码内部有一个等式?例如:(毛额*10) 下面是我希望有数值输入的代码://Display private class Handler implements ActionListener{public void actionPerformed(ActionEvent e){
问题内容: 我是这个C ++世界的新手,正在尝试为数字密码编写输入验证功能。这是我到目前为止所得到的: 对于不正确的值,它工作得很好,但在有效输入时不会中断循环。知道我在这里缺少什么吗?干杯!! James Kanze脚本的ErroR: 新代码: 使用 和 验证作为字符串 感谢所有人(尤其是James Kanze)的帮助。这件事在这里很有效。 那里还有进一步改进的空间吗?干杯!! 问题答案: 这看
我有一个只接受数字的mobileNumber正则表达式“[1-9][0-9]*”<但是我需要在开始时有一个可选的。但用户可能不会在开始时输入 例如9089098909 例如9089098909 例如919089098909 我最多可以接受13个字符<我正在做这个。谁能告诉我怎么解决这个问题吗?
如何验证只有2位数字的输入数字,并允许用户使用JQuery输入点数字? 用户可以输入0到99个数字和点数字 比如( 0.1(3位) 3.14(4位数字) 98.1212178623445243(更多数字) 等......) https://jsfiddle.net/kwcft9bq/ 我试着用 但最后还是不行 有什么想法吗???非常感谢。
问题内容: Python如何接受用户输入,并验证? 问题答案: 完成此操作的最简单方法是将方法置于循环中。当输入错误时使用,当你感到满意时使用。 当你的输入可能引发异常时 使用和检测用户何时输入了无法解析的数据。 实施你自己的验证规则 如果要拒绝Python可以成功解析的值,则可以添加自己的验证逻辑。 结合异常处理和自定义验证 以上两种技术都可以组合成一个循环。 将其全部封装在一个函数中 如果你需
本文向大家介绍JS验证 只能输入小数点,数字,负数的实现方法,包括了JS验证 只能输入小数点,数字,负数的实现方法的使用技巧和注意事项,需要的朋友参考一下 如下所示: 以上就是小编为大家带来的JS验证 只能输入小数点,数字,负数的实现方法全部内容了,希望大家多多支持呐喊教程~