JSF大于零验证程序
如果输入文本大于零,如何在JSF中创建验证程序来验证输入文本JSF大于零验证程序,jsf,jsf-2,Jsf,Jsf 2,如果输入文本大于零,如何在JSF中创建验证程序来验证输入文本 <h:inputText id="percentage" value="#{lab.percentage}"> <f:validateDoubleRange minimum="0.000000001"/> </h:inputText> 我有上面的代码,但我不确定这是否是最佳的。虽然它可以工作,但是如果需要比这个小的数字,那么我需要再次更改jsf文件。 用例是任何大于零的都可以,但不是负
<h:inputText id="percentage" value="#{lab.percentage}">
<f:validateDoubleRange minimum="0.000000001"/>
</h:inputText>
我有上面的代码,但我不确定这是否是最佳的。虽然它可以工作,但是如果需要比这个小的数字,那么我需要再次更改jsf文件。
用例是任何大于零的都可以,但不是负数
有什么想法吗?只需创建一个自定义验证器,即实现的类,并用
@FacesValidator(“positiveEnumberValidator”)
对其进行注释
执行validate()
方法,如下所示:
@Override
public void validate(FacesContext context, UIComponent component,
Object value) throws ValidatorException {
try {
if (new BigDecimal(value.toString()).signum() < 1) {
FacesMessage msg = new FacesMessage("Validation failed.",
"Number must be strictly positive");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ValidatorException(msg);
}
} catch (NumberFormatException ex) {
FacesMessage msg = new FacesMessage("Validation failed.", "Not a number");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ValidatorException(msg);
}
}
<h:inputText id="percentage" value="#{lab.percentage}">
<f:validator validatorId="positiveNumberValidator" />
</h:inputText>
@覆盖
公共无效验证(FacesContext上下文、UIComponent组件、,
对象值)引发异常{
试一试{
if(新的BigDecimal(value.toString()).signum()<1){
FacesMessage msg=新的FacesMessage(“验证失败”,
“数字必须严格为正”);
消息设置严重性(FacesMessage.SEVERITY_错误);
抛出新的验证异常(msg);
}
}捕获(NumberFormatException ex){
FacesMessage msg=新的FacesMessage(“验证失败”,“不是数字”);
消息设置严重性(FacesMessage.SEVERITY_错误);
抛出新的验证异常(msg);
}
}
并在facelets页面中使用它,如下所示:
@Override
public void validate(FacesContext context, UIComponent component,
Object value) throws ValidatorException {
try {
if (new BigDecimal(value.toString()).signum() < 1) {
FacesMessage msg = new FacesMessage("Validation failed.",
"Number must be strictly positive");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ValidatorException(msg);
}
} catch (NumberFormatException ex) {
FacesMessage msg = new FacesMessage("Validation failed.", "Not a number");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ValidatorException(msg);
}
}
<h:inputText id="percentage" value="#{lab.percentage}">
<f:validator validatorId="positiveNumberValidator" />
</h:inputText>
有用的链接:这可能会引起兴趣:是的,使用ValidateDubrerange(最小值=0)将允许零,这也是我不喜欢的…好的,请检查我下面的答案并让我知道(抱歉无法测试)。谢谢这是我的解决方案!