关于表单验证的一些东西
来源:互联网 发布:淘宝网怎么卖游戏账号 编辑:程序博客网 时间:2024/05/07 22:35
一 表单验证
1. 首先写一个×.jsp页面,在页面中写了一个form,表单提交给一个action,比如show.do
2. 要写一个Form类,继承ActionForm或是它的子类,该类中的属性值必须与form表单中
的name值相同,并且要提供getter和setter方法。
3. 写一个action类,并进行继承struts提供的Action类。
4. 写配置文件
<form-beans>
<form-bean name="showForm" type="form.ShowForm"/>
</form-beans>
<action-mappings>
<action path="/show"
type="action.ShowAction"
name="showForm" //name值必须与form-bean中的name值一致
attribute="sf" //tomcat会把提交数据以attribute中定义的名字存入到
session中,缺省为name的值
validate="true" //是否进行验证
scope="request" //可以设置存数据的对象,默认是session
</action-mappings>
5.若继承的是ActionForm类,还需重写validate方法,在validate方法中写验证逻辑。
二 表单验证的方法
1. 继承ActionForm类,重写validate方法
2. 使用validator框架进行验证,即继承ValidatorForm类,此时若没有特别要求,可以不
用重写validate方法,只需写一个validation.xml配置文件,在该配置文件中写一些验证逻
辑。一些错误信息可以写在资源文件中,然后再页面中通过<html:errors />来显示。
需要特别注意的是,在用validator框架进行验证时,还必须在struts-config.xml中配置
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
</plug-in>
三 对validate方法的扩展(验证结束日期必须大于开始日期)
1.页面 show.jsp
<body>
<html:form action="some" method="post">
用户名:<html:text property="username" />
<html:errors property="username" /><br/>
密码:<html:password property="password" />
<html:errors property="password" /><br/> // 显示错误信息
开始时间:<html:text property="startTime" />
<html:errors property="startTime" /><br/>
结束时间:<html:text property="endTime" />
<html:errors property="endTime" />
<html:errors property="startend" /><br/>
<input type="submit" value="Submit" />
</html:form>
</body>
2.SomeForm类,继承ValidatorForm
重写validate方法:
public ActionErrors validate(ActionMapping mapping,HttpServletRequest request) {
//调用父类的validate方法
ActionErrors errors = super.validate(mapping, request);
SimpleDateFormat format = new SimpleDateFormat(DATE_FORMAT);
//如果开始日期和结束日期都已经通过验证,则执行下列操作
//默认用属性名作为key值
if (errors.size("startTime") == 0 && errors.size("endTime") == 0) {
try {
//日期格式转换String-->Date
Date startDate = format.parse(startTime);
Date endDate = format.parse(endTime);
//两个日期间进行比较,若结束日期小于开始日期,则往errors中添加
//错误信息,errors.startAndend在资源文件中配置
if (endDate.compareTo(startDate) < 0) {
errors.add("startend", new ActionMessage("errors.startAndend"));
}
} catch (ParseException e) {
e.printStackTrace();
}
}
return errors; //返回错误信息
}
3.资源文件
errors.required {0}不能为空
errors.minlength {0}长度不能小于6
errors.date 日期格式为'yyyy-MM-dd'
user.name 用户名
user.password 密码
user.startTime 开始时间
user.endTime 结束时间
errors.startAndend 开始时间必须大于结束时间
4.struts-config.xml 配置文件
<form-bean name="someForm" type="form.SomeForm" />
<action path="/show"
//struts提供的一个类,可以直接转发到页面
type="org.apache.struts.actions.ForwardAction"
parameter="/WEB-INF/jsp/show.jsp">
</action>
<action path="/some"
type="action.SomeAction"
name="someForm" //该name的值必须与form-bean中的name值相同
validate="true"
input="/show.do">
</action>
// 注意这个一定不能少,否则抛出异常
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
</plug-in>
5.validation.xml 配置文件
<?xml version="1.0" encoding="UTF-8"?>
<form-validation>
<formset>
<form name="someForm"> //attribute的值,没有指定,默认是name的值
<field property="username" depends="required">
<arg key="user.name" position="0" />
</field>
<field property="password" depends="required,minlength" >
<arg key="user.password" position="0" />
<var>
<var-name>minlength</var-name>
<var-value>6</var-value>
</var>
</field>
<field property="startTime" depends="required,date">
<arg key="user.startTime" position="0"></arg>
<var>
<var-name>datePattern</var-name>
<var-value>yyyy-MM-dd</var-value>
</var>
</field>
<field property="endTime" depends="required,date">
<arg key="user.endTime" position="0"></arg>
<var>
<var-name>datePattern</var-name>
<var-value>yyyy-MM-dd</var-value>
</var>
</field>
</form>
</formset>
</form-validation>
第一次写这个东西,写的不好还请见谅。如果觉得哪里有问题,请提出来,我好改进!!!
- 关于表单验证的一些东西
- 表单验证的一些东西
- 关于player的一些东西
- 关于Rss的一些东西
- 关于招聘的一些东西
- 关于log4j的一些东西
- 关于memset的一些东西
- 关于电子邮件的一些东西
- 关于sscanf的一些东西
- 一些关于hibernate的东西
- 关于emacs的一些东西
- 关于javaScript的一些东西
- 关于wlan的一些东西
- 关于bsp的一些东西
- 关于补码的一些东西
- 关于友元类的一些东西
- 关于一些语法的东西
- 关于iBeacons的一些东西
- Ghost 使用详解
- 程序员五大层次,你属于哪一层?
- Emacs中的一些经验和技巧
- Emacs 快速指南(Emacs tutorial)
- Google搜索引擎的十大应用
- 关于表单验证的一些东西
- AIX 下的 core dump 分析入门
- iPhone3G S, Palm Pre和Android G1性能价格大比拼
- 能搞定GPS跟踪的人
- 国外安全专家发现Google Docs新的安全漏洞
- 2007年11月12日(10日、11日没写)
- ASp.net三层架构原理 剖析三层架构
- JS与CSS合并写在同一份文件
- 浅谈Hibernate缓存机制以及一级缓存和二级缓存的作用