如果标准的JSF验证器不能满足您的要求,你可以编写自己的验证器。在我们的例子中,我们将编写一个验证器来验证一个字符串是否是一个合法的email。要创建一个自定义验证器,需要创建一个实现javax.faces.validator.Validator接口的类,并在faces-config.xml中配置,可以通过<f:validator>标记来使用验证器。
1. 右键点击工程节点,然后选择New > Java Class,把类命名为EmailValidator,把这个类放在包astrologer.validate中,然后点击Finish。
2. 在类的声明中,实现Validator,如下:
public class EmailValidator implements Validator {
3. 使用提示来实现validate方法。
4. 修改方法的签名,然后增加下面的代码:
public void validate(FacesContext facesContext,
UIComponent uIComponent, Object value) throws ValidatorException {
//Get the component's contents and cast it to a String
String enteredEmail = (String)value;
//Set the email pattern string
Pattern p = Pattern.compile(".+@.+\\.[a-z]+");
//Match the given string with the pattern
Matcher m = p.matcher(enteredEmail);
//Check whether match is found
boolean matchFound = m.matches();
if (!matchFound) {
FacesMessage message = new FacesMessage();
message.setDetail("Email not valid - The email must be in the format
<!--
var user = "yourname";
var domain = "yourdomain.com";
var at = "@";
document.write(user + at + domain);
//-->
yourname
@
yourdomain.com
");
message.setSummary("Email not valid - The email must be in the format
<!--
var user = "yourname";
var domain = "yourdomain.com";
var at = "@";
document.write(user + at + domain);
//-->
yourname
@
yourdomain.com
");
message.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ValidatorException(message);
}
}
5. 使用Alt+Shift+F 添加必须的import语句。(您应该选择引入java.util.regex.Matcher, java.util.regex.Pattern and javax.faces.application.FacesMessage.)
6. 打开faces-config.xml,然后添加下面的代码:
...
</application>
<validator>
<validator-id>astrologer.EmailValidator</validator-id>
<validator-class>astrologer.validate.EmailValidator</validator-class>
</validator>
</faces-config>
7. 打开greeting.jsp,然后添加email域:
...
<p>Enter your name: <h:inputText value="#{UserBean.name}"
id="name" required="true"/>
<h:message for="name" /></p>
<p>Enter your email: <h:inputText value="email"
id="email" required="true">
<f:validator validatorId="astrologer.EmailValidator" />
</h:inputText>
<h:message for="email" /></p>
<p>Enter your birthday: <h:inputText value="#{UserBean.birthday}"
id="birthday" required="true">
...
8. 运行工程,如果你输入了一个无效的email,你将会得到下面的错误:
关于自定义验证器参考书上188页。
书:《Java EE 5实用教程》
分享到:
相关推荐
NetBeans中JSF应用开发
在基于J2EE技术的三层架构软件开发过程中,大部分程序员比较习惯于所谓的SSH架构,即Struts+Spring+Hibernate。其中Struts框架负责“视图View—控制器Control—模型Model”的导航。而JSF的出现,给了程序员们一个...
在基于J2EE 技术的三层架构软件开发过程中,大部分程序员比较习惯于所谓 的SSH 架构,即Struts+Spring+Hibernate。其中Struts 框架负责“视图View— 控制器Control—模型Model”的导航。而JSF 的出现,给了程序员们...
用NetBeans做一个可以增加删除的购物车的JSF WEB应用
李刚,从事10年的Java EE应用开发。曾任LITEON公司的J2EE技术主管,负责该公司的企业信息平台的架构设计。曾任广州电信、广东龙泉科技等公司的技术培训导师。2007年3月26日的《电脑报》专访人物。现任新东方广州中心...
使用Netbeans 7.3 开发基于JSF, EJB, JPA的应用程序. JSF实用primefaces 3.4, 数据库使用oraclexe 11g. 注: 该文档是在原作者的netbeans6.8, javadb的基础上修改的,并在netbeans 7.3中测试成功.
NetBeans Visual Web 使用指南,通过这个简易指南,您可以快速入门使用JSF,并且可以快速开发基于JSF应用程序。
文件有适用于Jakarta EE新手,包括: 使用流行的IDE设置本地开发环境,例如: Apache NetBeans IDE Eclipse IDE IntelliJ IDEA。 在流行的应用程序服务器上部署和运行应用程序,例如: 玻璃鱼野蝇开放自由使用Junit...
采用Netbeans、Eclipse、Oracle、Tomcat 等作为开发工具,在持久层使用轻量级ORM 开源框架Hibernate 技术,结合DAO 设计模式。用Spring 的IOC 和AOP 技术对持 久层和业务逻辑层对象进行管理,为web 应用提供事务管理...
应用程序本身展示了如何在不使用 JBoss 或 WebSphere 等重型应用程序服务器的情况下开发 JPA/JSF 应用程序。 索引页上显示了一个可点击的灯泡图像,其中从数据库中获取了最后的开关状态。 bean 也是会话范围的,以...
基于Jboss+JSF+JPA+EJB3开发。 部署Java EE应用请按如下步骤进行: 1. 将mysql.sql脚本中的语句导入MySQL数据库。 可以修改tomcat、mysql两个账户的邮件地址,这样可使用自己的邮件地址来收取系统发送的邮件通知。...
并提供使用最新版本NetBeans IDE和GIassFish服务器开源版的有关说明书中不仅介绍了平台的基础知识,包括资源创建、资源注入和打包,还涵盖了多项相关技术,包括JavaServer Faces(JSF)、Java Servlet、WebSocket Java...
并提供使用最新版本NetBeans IDE和GIassFish服务器开源版的有关说明书中不仅介绍了平台的基础知识,包括资源创建、资源注入和打包,还涵盖了多项相关技术,包括JavaServer Faces(JSF)、Java Servlet、WebSocket Java...
该Web应用程序使用Java EE(JSF框架),Postgresql,Glassfish,Google Maps API,Ajax,Primefaces,Maven,Netbeans, 主要特点: 与工作机会相关的排名恢复使用以下四个标准:经验年限,学习程度,技能和语言。 ...
(二)要求使用JSF作为页面开发手段,请勿使用JSP页面。 (三)开发工具建议使用NetBeans或者Eclipse。 (四)建议使用Mysql作为数据库服务器,也可以使用JavaDB等其他数据库类产品作为数据库服务器。 三、性能要求...
学习Java EE,在开发环境上不建议再用文本编辑器,我感觉NetBeans 5.5(目前最高正式版本)很适合初学者,我个人也很喜欢NetBeans,如果你喜欢用别的IDE如Eclipse,都没问题,看自己喜欢吧。 4.1 学习JSP/Servlet ...
文件有适用于Jakarta EE新手,包括: 使用流行的IDE设置本地开发环境,例如: Apache NetBeans IDE Eclipse IDE IntelliJ IDEA。 在流行的应用程序服务器上部署和运行应用程序,例如: 玻璃鱼野蝇开放自由使用Junit...
此外,由于不同终端性能的差别,j2me开发中的 机型适配是相当繁琐的工作。当然,对于该难题,有很多种解决方案。例如,可以使用j2mepolish,请参考本人以前发表的文章《使用J2mePolish的build和preprocess功能》。...
用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...