Struts2-----数据校验
2015-11-19 09:22
531 查看
1,表单的数据校验:
前台验证:主要是通过JS验证,表达数据是否合法
后台验证:通过后台java代码进行验证!
Struts页提供了数据校验的方式!
2,Struts数据校验,通过拦截器完成:
3,代码方式验证Action中所有的方法
ActionSupport是个工具类,实现了Action,Validatable等接口,Validatable提供validate()方法进行数据验证,Action只要继承ActionSupport类,重写validate()方法就可以进行数据验证
校验流程:Struts框架对输入数据进行类型转换,然后在进行数据校验,如果类型转换与数据校验都没有发生错误,就行如execute(),否则请求将被转发发哦input视图
以上代码可以验证Action中的多个方法,如果想要验证指定的Action中的方法,只需要更改验证方法的命名:validate+要验证的方法名
如下:
4,XML方式验证Action中所有的方法:
代码验证方式繁琐,涉及很多重复的验证逻辑!例如:非空验证、数值验证、email、日期等。
Struts对于常用的验证,进行了封装,即提供了验证器,验证指定的常用业务逻辑!包含在
xwork-core-2.3.4.1.jar/com.opensymphony.xwork2.validator.validators/default.xml文件中
编写xml验证配置文件的命名规则:
1,xml文件名称语法:ActionClassName-validate.xml
注意:此xml需要与当前要验证的action在同一个目录;举例UserAction-validate.xml
2,代码如下:
以上代码可以验证Action中的多个方法,如果想要验证指定的Action中的方法,只需要更改xml文件的名称为:ActionClassName-ActionName-validation.xml(其中ActionClassName是要验证的Action的类名,ActionNAme是struts配置文件中该Action对应的路径)
例如:UserAction-user_register-validation.xml,表示验证UserAction中的register方法.其余不变!
5,验证错误处理:
Struts在进行数据效验的时候,验证失败,会返回input视图,要求我们要在struts.xml中配置input视图对应的错误页面!
JSP页面显示错误:
方式1:显示所有错误
方式2:显示指定错误
<span style="font-size:14px;"><!-- 修改struts标签默认的样式: 不让换行 -->
<style type="text/css">
ul{
display: inline;
}
ul li{
display: inline;
color: red;
}
</style></span>
方式3: 修改标签定义的模板
找到fielderror标签定义的模板文件:
Struts-core.jar\template\simple\ fielderror.ftl
把修改后的fielderror.ftl文件,放到src/ template/ simple/ fielderror.ftl
这样标签显示的样式就修改了!
前台验证:主要是通过JS验证,表达数据是否合法
后台验证:通过后台java代码进行验证!
Struts页提供了数据校验的方式!
2,Struts数据校验,通过拦截器完成:
<span style="font-size:14px;"><interceptor name="validation" class="org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor"/></span>
3,代码方式验证Action中所有的方法
ActionSupport是个工具类,实现了Action,Validatable等接口,Validatable提供validate()方法进行数据验证,Action只要继承ActionSupport类,重写validate()方法就可以进行数据验证
校验流程:Struts框架对输入数据进行类型转换,然后在进行数据校验,如果类型转换与数据校验都没有发生错误,就行如execute(),否则请求将被转发发哦input视图
<span style="font-size:14px;">package action; import com.opensymphony.xwork2.ActionSupport; /* 如果要想使用Struts的数据校验功能,就必须继承ActionSupport类 */ public class UserAction extends ActionSupport{ private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } //代码实现数据校验 //重写数据校验方法 public void validate() { //用户名非空 if(user.getUserName()==null || "".equals(user.getUserName())){ //保存错误信息 super.addFieldError("userName", "用户名必须填写"); } //密码 if(user.getPwd()==null||"".equals(user.getPwd())){ super.addFieldError("pwd", "密码必须填写"); } super.validate(); } //业务方法 public String register(){ System.out.println(user); return SUCCESS; } //列表展示 public String list(){ return SUCCESS; } } </span>
<span style="font-size:14px;"> <body> <%@ taglib uri="/struts-tags" prefix="s"%> <form method="post" action="${pageContext.request.contextPath}/user_register.action"> 用户名:<input type="text" name="user.userName"> <s:fielderror fieldName="user.userName"></s:fielderror> <br/> 密码:<input type="password" name="user.pwd"> <!-- 显示struts在运行的时候出现的指定错误 --> <s:fielderror fieldName="user.pwd"></s:fielderror> <br/> 邮箱:<input type="text" name="user.email"> <s:fielderror fieldName="user.email"></s:fielderror> <br/> 生日:<input type="text" name="user.birth"> <s:fielderror fieldName="user.birth"></s:fielderror> <br/> <input type="submit" value="注册"><br/> </form> </body></span>
以上代码可以验证Action中的多个方法,如果想要验证指定的Action中的方法,只需要更改验证方法的命名:validate+要验证的方法名
如下:
<span style="font-size:14px;">//代码实现数据校验 //重写数据校验方法 public void validateRegister() { //用户名非空 if(user.getUserName()==null || "".equals(user.getUserName())){ //保存错误信息 super.addFieldError("userName", "用户名必须填写"); } //密码 if(user.getPwd()==null||"".equals(user.getPwd())){ super.addFieldError("pwd", "密码必须填写"); } super.validate(); }</span>
4,XML方式验证Action中所有的方法:
代码验证方式繁琐,涉及很多重复的验证逻辑!例如:非空验证、数值验证、email、日期等。
Struts对于常用的验证,进行了封装,即提供了验证器,验证指定的常用业务逻辑!包含在
xwork-core-2.3.4.1.jar/com.opensymphony.xwork2.validator.validators/default.xml文件中
编写xml验证配置文件的命名规则:
1,xml文件名称语法:ActionClassName-validate.xml
注意:此xml需要与当前要验证的action在同一个目录;举例UserAction-validate.xml
2,代码如下:
<span style="font-size:14px;"><?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> <validators> <!-- 验证每一个字段用field表示 --> <field name="user.userName"> <!-- 指定使用的验证器 --> <field-validator type="requiredstring"> <!-- 验证失败的错误提示信息 --> <message>用户名不能为空</message> </field-validator> </field> <field name="user.pwd"> <field-validator type="requiredstring"> <message>密码不能为空</message> </field-validator> <field-validator type="stringlength"> <param name="minLength">6</param> <param name="maxLength">8</param> <message>密码必须为6-8位</message> </field-validator> </field> <field name="user.birth"> <field-validator type="date"> <message>日期格式不对</message> </field-validator> </field> <field name="user.email"> <field-validator type="email"> <message>邮箱格式不对</m 4000 essage> </field-validator> </field> </validators> </span>
<span style="font-size:14px;">package action; import com.opensymphony.xwork2.ActionSupport; /* 如果要想使用Struts的数据校验功能,就必须继承ActionSupport类 */ public class UserAction extends ActionSupport{ private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } //业务方法 public String register(){ System.out.println(user); return SUCCESS; } //列表展示 public String list(){ return SUCCESS; } } </span>
以上代码可以验证Action中的多个方法,如果想要验证指定的Action中的方法,只需要更改xml文件的名称为:ActionClassName-ActionName-validation.xml(其中ActionClassName是要验证的Action的类名,ActionNAme是struts配置文件中该Action对应的路径)
例如:UserAction-user_register-validation.xml,表示验证UserAction中的register方法.其余不变!
5,验证错误处理:
Struts在进行数据效验的时候,验证失败,会返回input视图,要求我们要在struts.xml中配置input视图对应的错误页面!
<span style="font-size:14px;"><!-- 注册失败跳转到注册页面,显示失败信息 --> <global-results> <result name="input">/register.jsp</result> </global-results></span>
JSP页面显示错误:
方式1:显示所有错误
<span style="font-size:14px;"><%@taglib uri="/struts-tags" prefix="s" %> <!-- 显示的是struts在运行时期产生的所有错误 --> <s:fielderror></s:fielderror></span>
方式2:显示指定错误
<span style="font-size:14px;"><!-- 修改struts标签默认的样式: 不让换行 -->
<style type="text/css">
ul{
display: inline;
}
ul li{
display: inline;
color: red;
}
</style></span>
<span style="font-size:14px;"><s:fielderror fieldName="user.userName"></s:fielderror></span>
方式3: 修改标签定义的模板
找到fielderror标签定义的模板文件:
Struts-core.jar\template\simple\ fielderror.ftl
把修改后的fielderror.ftl文件,放到src/ template/ simple/ fielderror.ftl
这样标签显示的样式就修改了!
相关文章推荐
- 插件管理框架 for Delphi(一)
- 使用CSS框架布局的缺点和优点小结
- 列举PHP的Yii 2框架的开发优势
- Windows窗体的.Net框架绘图技术实现方法
- 浅谈JavaScript 框架分类
- 轻量级javascript 框架Backbone使用指南
- javascript实现框架高度随内容改变的方法
- JS刷新框架外页面七种实现代码
- 超赞的动手创建JavaScript框架的详细教程
- 简单介绍不用库(框架)自己写ajax
- asp.net4.0框架下验证机制失效的原因及处理办法
- 插件管理框架 for Delphi(二)
- 零基础学习AJAX之AJAX框架
- Ajax 框架学习笔记
- Flex中最好的MVC框架Mate框架
- JavaScript 异步调用框架 (Part 4 - 链式调用)
- JavaScript 异步调用框架 (Part 2 - 用例设计)
- 为什么使用框架 使用框架的优缺点
- JavaScript 异步调用框架 (Part 3 - 代码实现)
- js刷新框架子页面的七种方法代码