JSF以注释的形式为bean模型提供了验证约束。你可以将这些注释放在JavaBeans组件(例如托管Bean)的字段, 方法或类上。
JSF还提供了创建自定义或用户定义的约束的工具。内置约束在javax.validation.constraints包中可用, 并在下表中列出。
内置Bean验证约束
约束 | 描述 | 例 |
---|---|---|
@NotNull | 它用于将非null约束设置为字段或属性的值。 | @NotNull字符串用户名; |
@Null | 它用于将null约束设置为字段或属性的值。 | @Null字符串usedString; |
@Size | 它用于指定字段或属性的大小。将评估字段或属性的大小, 并且必须匹配指定的边界。使用可选的max或min元素之一来指定边界。 | @Size(min = 2, max = 240)字符串briefMessage; |
@Digits | 它用于设置约束, 即字段或属性的值必须是指定范围内的数字。整数元素指定该数字的最大整数位数, 而小数元素指定该数字的最大分数位数。 | @Digits(整数= 6, 分数= 2)BigDecimal价格; |
@DecimalMin | 此约束指定该字段或属性的值必须是一个大于或等于value元素中数字的十进制值。 | @DecimalMin(“ 5.00”)BigDecimal折扣; |
@DecimalMax | 它用于指定字段或属性的值必须是小于或等于value元素中数字的十进制值。 | @DecimalMax(“ 30.00”)BigDecimal折扣; |
@Max | 它用于设置字段或属性的值, 该值必须是小于或等于value元素中数字的整数值。 | @Max(10)整数数量; |
@Min | 它用于设置字段或属性的值, 该值必须是大于或等于value元素中数字的整数值。 | @Min(5)int数量; |
@Pattern | 它用于设置必须与regexp元素中定义的正则表达式匹配的模式。 | @Pattern(regexp =“ \\(\\ d {3} \\)\\ d {3}-\\ d {4}”)字符串phoneNumber; |
@Past | 它用于设置字段或属性的值, 该值必须是过去的日期。 | @Past Date生日; |
@Future | 它用于设置字段或属性的值, 该值必须是将来的日期。 | @未来日期eventDate; |
@AssertTrue | 它用于设置必须为true的字段或属性的值。 | @AssertTrue布尔isActive; |
@AssertFalse | 它用于设置必须为false的字段或属性的值。 | @AssertFalse布尔值isUnsupported; |
JSF Bean验证示例
// index.xhtml
<h:form id="form">
<h:outputLabel for="username">User Name</h:outputLabel>
<h:inputText id="name-id" value="#{user.name}"/>
<h:message for="name-id" style="color: red"/>
<br/>
<h:outputLabel for="age">Enter Age</h:outputLabel>
<h:inputText id="age-id" value="#{user.age}"/>
<h:message for="age-id" style=" color: red"/>
<br/>
<h:outputLabel for="mobile">Mobile No.</h:outputLabel>
<h:inputText id="mobile-id" value="#{user.mobile}"/>
<h:message for="mobile-id" style="color: red"/>
<br/>
<h:commandButton value="OK" action="response.xhtml"></h:commandButton>
</h:form>
// User.java
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Min;
import javax.validation.constraints.Size;
@ManagedBean
@RequestScoped
public class User{
@NotNull(message = "Name can't be empty")
String name;
@Min(18)
int age;
@NotNull(message = "Mobile can't be empty")
@Size(min = 10, max = 10, message = "Mobile must have 10 digits")
String mobile;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
}
将以下代码放入你的web.xml文件中。它用于告知JSF空值必须视为null。
// web.xml
<context-param>
<param-name>
javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL
</param-name>
<param-value>true</param-value>
</context-param>
输出:
评论前必须登录!
注册