1. JSF验证器
说完转换器就该说说验证器了,就拿上面的日期类型来说吧,如果输入的值是非法的,那么它就不能走完组件生命周期,在第三个阶段处理检验阶段发现了错误~得,直接进入第六个阶段,错误的输入,您哪,玩儿去……验证器还能验证数值的大小,像那个经典的JSF入门例子,猜数字,就是用的大小验证器来判断的。
<h:inputText value="#{UserNumberBean.userNumber}">
<f:validateLongRange minimum="#{UserNumberBean.mininum}"
maximum="#{UserNumberBean.maxinum}" />
</h:inputText>
如果业务复杂,就需要我们自己定义验证器了,想想我们在Swing程序是怎么来验证输入的数据的合法性的。一般是添加一个监听器,发现该数值发生了改变、鼠标焦点离开此空间等等事件,就进行监听事件的一些列方法。,JSF在页面上加入自定义的验证器标签即可。
先看托管Bean类
package validator;
public class Email {
private String mailStr;
public String getMailStr() {
return mailStr;
}
public void setMailStr(String mailStr) {
this.mailStr = mailStr;
}
public String checkEmail() {
System.out.println(mailStr);
return "checkEmail";
}
}
验证器如下
package validator;
import java.util.regex.Pattern;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.component.UIInput;
import javax.faces.context.FacesContext;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;
public class EmailValidator implements Validator {
public void validate(FacesContext context, UIComponent component, Object value)
throws ValidatorException {
Pattern p = Pattern.compile("[_\\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\\.)+[a-z]{2,3}");
boolean falg = p.matcher((String)value).matches();
if(!falg){
((UIInput)component).setValid(false);
FacesMessage facesMessage = new FacesMessage();
facesMessage.setSeverity(FacesMessage.SEVERITY_ERROR);
facesMessage.setSummary("邮件格式不正确");
facesMessage.setDetail("详细:如:suhuan@163.com");
throw new ValidatorException(facesMessage);
}
}
}
上面是实现了Validator接口,并实现了验证其方法,验证输入的Email信息是否是合法的Email信息。抛出验证异常ValidatorException就代表没通过验证,如果验证器通过了,才能走到托管Bean的方法。在JSF配置文件中加入如下配置告诉JSF有自定义验证器
<!--验证器-->
<validator>
<validator-id>validator.EmailValidator</validator-id>
<validator-class>validator.EmailValidator</validator-class>
</validator>
页面如下:
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<f:view>
<h:form id="guessForm">
<h2>
输入email:
</h2>
<h:inputText id="email" value="#{Email.mailStr}">
<f:validator validatorId="validator.EmailValidator" />
</h:inputText>
<h:commandButton id="sumbit1" action="#{Email.checkEmail}"
value="提交" />
<h:message for="email" style="color:red" />
<br />
</h:form>
</f:view>
</body>
</html>
效果如下,输入一个不合法的Email信息
错误的信息,生命周期到了第3个阶段就进入第6个呈现阶段了,输入正确的信息后,6个生命周期可以顺利走完。
- 大小: 40.9 KB
分享到:
相关推荐
### JavaEE5学习笔记07-Web层与EJB集成总结 #### 一、JavaEE5框架中的Web层与EJB集成概述 在JavaEE5(即Java Platform, Enterprise Edition 5)中,Web层与EJB(Enterprise JavaBeans)的集成是构建企业级应用的...
### JavaEE5学习笔记01-JTA和数据库事务:深入解析与应用 #### 一、JavaEE5概览与核心组件 JavaEE5是Java Enterprise Edition的第五个版本,标志着企业级Java应用的一个重要里程碑。它引入了一系列重要的新特性,...
这篇学习笔记主要聚焦于JavaMail在JavaEE5中的使用,通过深入理解其核心概念和实践操作,我们可以更好地在实际项目中应用这一工具。 JavaMail API提供了一套标准的接口,允许Java应用程序发送和接收电子邮件。它...
API JAR文件包含JSF的公共接口和类,允许开发者在应用程序中引用和使用JSF的功能,如创建可重用的UI组件、处理用户事件、数据绑定等。 3. **jsf-impl.jar**:与jsf-api.jar相对应,这个文件包含了JSF的实现代码。在...
总结来说,JNDI和RMI在JavaEE5中提供了强大的服务发现和分布式对象通信能力,使得开发者能够构建可扩展、模块化的企业级应用。通过JNDI,应用可以轻松地查找和利用服务器上的资源,而RMI则为远程对象的调用提供了...
javaee-api-8.0-javadoc.jar,这是javaee1.8api的jar包,解压后可用javadoc2chm制作成chm帮助文档。
JavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-...
JavaEE源代码 struts2-core-2.0.11JavaEE源代码 struts2-core-2.0.11JavaEE源代码 struts2-core-2.0.11JavaEE源代码 struts2-core-2.0.11JavaEE源代码 struts2-core-2.0.11JavaEE源代码 struts2-core-2.0.11JavaEE源...
JavaEE源代码 struts2-spring-plugin-2.0.11JavaEE源代码 struts2-spring-plugin-2.0.11JavaEE源代码 struts2-spring-plugin-2.0.11JavaEE源代码 struts2-spring-plugin-2.0.11JavaEE源代码 struts2-spring-plugin-...
java javaee-api-6.0-5
JavaEE源代码 jsf-implJavaEE源代码 jsf-implJavaEE源代码 jsf-implJavaEE源代码 jsf-implJavaEE源代码 jsf-implJavaEE源代码 jsf-implJavaEE源代码 jsf-implJavaEE源代码 jsf-implJavaEE源代码 jsf-implJavaEE源...
JavaEE源代码 jaxen-1.1-beta-7JavaEE源代码 jaxen-1.1-beta-7JavaEE源代码 jaxen-1.1-beta-7JavaEE源代码 jaxen-1.1-beta-7JavaEE源代码 jaxen-1.1-beta-7JavaEE源代码 jaxen-1.1-beta-7JavaEE源代码 jaxen-1.1-...
JSF IMPL还包含了默认的渲染器和验证器,开发者可以根据需要覆盖或扩展这些默认行为。 **JSTL (JavaServer Pages Standard Tag Library)** JSTL是用于JSP页面的一组标准标签库,它提供了各种功能,如SQL查询、XML...
JavaEE源代码 commons-logging-1.0.4JavaEE源代码 commons-logging-1.0.4JavaEE源代码 commons-logging-1.0.4JavaEE源代码 commons-logging-1.0.4JavaEE源代码 commons-logging-1.0.4JavaEE源代码 commons-logging-...
JavaEE源代码 commons-collections-2.1.1JavaEE源代码 commons-collections-2.1.1JavaEE源代码 commons-collections-2.1.1JavaEE源代码 commons-collections-2.1.1JavaEE源代码 commons-collections-2.1.1JavaEE源...