`
suhuanzheng7784877
  • 浏览: 707053 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Ff8d036b-05a9-33b5-828a-2633bb68b7e6
读金庸故事,品程序人生
浏览量:47831
社区版块
存档分类
最新评论

JavaEE5学习笔记12-JSF验证器使用总结

阅读更多

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学习笔记12-JSF集成AJAX使用经验总结

    ### JavaEE5学习笔记12-JSF集成AJAX使用经验总结 #### 1. JSF (JavaServer Faces) 概览 JavaServer Faces (JSF) 是 Java EE 的一个重要组成部分,它提供了一种构建用户界面的组件框架。JSF 允许开发者创建可重用的...

    JavaEE5学习笔记11-JSF转换器验证器使用经验总结

    ### JavaEE5学习笔记11-JSF转换器验证器使用经验总结 在JavaEE5的学习过程中,JSF(JavaServer Faces)作为一款重要的框架被广泛应用于企业级应用开发。本篇笔记将重点介绍JSF中的两个核心概念:转换器(Converter)...

    JavaEE5实战笔记04JSF的一些补充

    本篇实战笔记主要补充了在JavaEE5中使用JSF的一些关键点,特别是关于流程转向和界面参数传递。 1. **流程转向**: 在JSF中,流程转向通常通过`faces-config.xml`文件中的`&lt;navigation-rule&gt;`元素来定义。例如,当...

    javaEE示例word版

    总的来说,这个“javaEE示例word版”压缩包是一个全面的JavaEE学习资源,从理论到实践,覆盖了从基础到高级的各种知识点。通过学习和实践其中的内容,开发者可以系统地掌握JavaEE的开发技能,提升构建企业级应用的...

    传智168期JavaEE struts2杜宏 day 29~day31笔记.pdf

    标题中的“传智168期JavaEE struts2杜宏 day 29~day31笔记”暗示了文档是一系列关于JavaEE技术栈中的Struts2框架的课程笔记,由杜宏教授,并且特别强调了是从29天到31天的学习内容。JavaEE(Java Platform, ...

    javaweb 学习笔记(李巍老师)

    李巍老师的“javaweb学习笔记”无疑为初学者和进阶者提供了一套全面而深入的学习资源。下面将详细阐述JavaWeb的主要知识点: 1. **Servlet**:Servlet是JavaEE规范的一部分,用于处理HTTP请求,它是服务器端应用...

Global site tag (gtag.js) - Google Analytics