JSR303自定义验证是一种基于Java Bean Validation规范的验证框架,它可以帮助开发者在应用程序中实现数据验证。JSR303自定义验证可以帮助开发者在应用程序中实现数据验证,以保证数据的准确性和一致性。
JSR303自定义验证主要包含三个部分:注释、校验器和校验工厂。注释是由开发者在JavaBean上使用的注释;校验器是由开发者创建的校验逻辑;校验工厂是由开发者创建的工厂(Factory),用于将注释与校验逻辑关联。
@NotNull(message = "Name cannot be null") private String name;
上述代码中使用了@NotNull注释来表明name字段不能为null。当name字段为null时,会返回“Name cannot be null”的消息。
JSR303自定义验证还具有一些其他优势:
总之,JSR303自定义验证是一套强大耐用的数据校
我们可以在JSF中创建自己的自定义验证器。
以下列表包含我们在JSF中创建自定义验证器时可以遵循的步骤。
以下代码来自EmailValidator.java。
package cn..common; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.faces.application.FacesMessage; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.validator.FacesValidator; import javax.faces.validator.Validator; import javax.faces.validator.ValidatorException; @FacesValidator("cn..common.EmailValidator") public class EmailValidator implements Validator{ private static final String EMAIL_PATTERN = "^[_A-Za-z0-9-]+(." + "[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(.[A-Za-z0-9]+)*" + "(.[A-Za-z]{2,})$"; private Pattern pattern; private Matcher matcher; public EmailValidator(){ pattern = Pattern.compile(EMAIL_PATTERN); } @Override public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException { matcher = pattern.matcher(value.toString()); if(!matcher.matches()){ FacesMessage msg = new FacesMessage("E-mail validation failed.", "Invalid E-mail format."); msg.setSeverity(FacesMessage.SEVERITY_ERROR); throw new ValidatorException(msg); } } }
以下代码来自demo.xhtml。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"> <h:body> <h:form> <h:panelGrid columns="3"> Enter your email : <h:inputText id="email" value="#{user.email}" size="20" required="true" label="Email Address"> <f:validator validatorId="cn..common.EmailValidator" /> </h:inputText> <h:message for="email" style="color:red" /> </h:panelGrid> <h:commandButton value="Submit" action="result" /> </h:form> </h:body> </html>
以下代码来自result.xhtml。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" > <h:body> <h1>Custom validator in JSF 2.0</h1> <h:panelGrid columns="2"> Email Address : <h:outputText value="#{user.email}" /> </h:panelGrid> </h:body> </html>
下面的代码来自UserBean.java。
package cn..common; import java.io.Serializable; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; @ManagedBean(name="user") @SessionScoped public class UserBean implements Serializable{ private static final long serialVersionUID = 1L; String email; public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }下载 Custom-Validator.zip
将生成的WAR文件从目标文件夹复制到Tomcat部署文件夹,并运行Tomcat-Install-folder/bin/startup.bat。
Tomcat完成启动后,在浏览器地址栏中键入以下URL。
http://localhost:8080/simple-webapp/demo.xhtml
JSF教程 -JSF 输出样式表示例h:outputStylesheet标签渲染的HTML元素类型“链接"类型“文本/ CSS"。此标记将外部样式表文件添加到...
JPA教程 -JPA查询like Escape示例如果模式字符串包含应匹配的下划线或百分号,则ESCAPE子句可以使用指定转义字符:SELECT dFROM ...
Java教程中的脚本 -Java简介中的脚本例子...Java Scripting API可以执行以任何脚本语言编写的脚本编译成Java字节码。JDK 6和7附...
Java设计模式 - 过滤器/标准模式过滤器模式使用不同的条件过滤对象。这些标准可以通过逻辑操作链接在一起。过滤器模式是一种结构...
Java设计模式 - 战略模式在策略模式中,可以在运行时更改算法。策略模式是一种行为模式。在策略模式中,我们创建表示各种算法的...