Struts2 校验(XML配置校验)
来源:互联网 发布:flash cs4 mac 编辑:程序博客网 时间:2024/04/29 10:01
基本说明:
Struts校验可以分为两种类型:Annotation型,XML配置型
Annotation型主要使用Annotation来配置Action中的属性,这里我们做过多的介绍,需要看的请参看我的其他相关文章。XML配置型主要是指,使用XML来描述配置信息,之后提供给Struts框架做校验。使用Struts2,XML配置型的校验可以使用三种方式:普通的服务器端校验方式,客户纯JavaScript方式端校验,和Ajax方式的校验。
普通的服务器端校验方式:
客户端提交信息到服务器,在服务器上使用XML配置信息,校验客户端提交的信息,错误的情况下,返回input页面,显示校验错误信息。
客户端纯JavaScript校验方式:
在输入画面上,根据XML文件中的配置内容生成对应的JavaScript校验脚本,在提交数据的时候首先使用这些生成的JavaScript校验输入信息,错误情况下在画面上显示错误信息,不需要向服务器提交内容,只有输入数据校验正确的情况下才向服务器提交请求。这种方式的校验不支持所有Struts2内置的校验,只支持一部分校验:
required validator
requiredstring validator
stringlength validator
regex validator
email validator
url validator
int validator
double validator
Ajax方式校验
在提交请求的时候,首先使用AJAX的方式将数据提交到服务器,在校验出错的情况下在页面显示错误信息,但是不刷新页面,在校验成功的情况下,才向服务器提交请求。
三种方式比较
1 定义Action类
Action.java
2 定义配置文件
Action-validation.xml
3 在struts.xml中定义action,注意由于使用了validation,所以必须定义input名字的result。
<action name="" class="">
<result></result>
<result name="input"></result>
</action>
4 定义JSP页面的Form,例如:
<s:form action="quizAction" >
<s:textfield label="Name" name="name"/>
<s:textfield label="Age" name="age"/>
<s:textfield label="Favorite color" name="answer"/>
<s:submit/>
</s:form>
与“普通的服务端校验方式”基本相同,但是需要在form定义的时候添加validate="true",例如:
<s:form action="quizAction" validate="true">
<s:textfield label="Name" name="name"/>
<s:textfield label="Age" name="age"/>
<s:textfield label="Favorite color" name="answer"/>
<s:submit/>
</s:form>
与“普通的服务端校验方式”基本相同,但是需要做如下修改:
1 安装dojo plugin
2 JSP中使用dojo plugin
<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
3 在head内部追加head标签(引入dojo的js库)
<sx:head />
4 修改form定义
<s:form method="post" theme="ajax" action="quizAjax" id="form">
<s:textfield label="Name" name="name" />
<s:textfield label="Age"name="age" />
<s:textfield label="Favorite color" name="answer"/>
<sx:submit validate="true" />
</s:form>
说明:struts-dojo-plugin在2.1.0的时候可能会Release。现在使用需要从Subversion中去除2.1.0SNAPSHOT代码:
svn http://svn.apache.org/repos/asf/struts/struts2/trunk
代码示例
// QuizAction 类
package example;import com.opensymphony.xwork2.ActionSupport;/*** Created by IntelliJ IDEA.* User: ma.zhao@dl.cn* Date: 2007-9-8* Time: 13:58:16* To change this template use File | Settings | File Templates.*/public class QuizAction extends ActionSupport {private static final long serialVersionUID = -7505437345373234225L;private String name;private int age;private String answer;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getAnswer() {return answer;}public void setAnswer(String answer) {this.answer = answer;}public String execute() {return SUCCESS;}}
// QuizValidation.xml 校验配置文件<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN""http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"><validators> <field name="name"> <field-validator type="requiredstring"> <message>You must enter a name</message> </field-validator> </field> <field name="age"> <field-validator type="int"> <param name="min">13</param> <param name="max">19</param> <message>Only people ages 13 to 19 may take this quiz</message> </field-validator> </field></validators>// struts.xml配置文件<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""http://struts.apache.org/dtds/struts-2.0.dtd"><struts> <package name="example" namespace="/example" extends="struts-default"> <action name="quizAction" class="example.QuizAction"> <result name="input">/example/quiz-ajax.jsp</result> <result>/example/quiz-success.jsp</result> </action> </package></struts>
// JSP 文件<%-- Created by IntelliJ IDEA.User: ma.zhao@dl.cnDate: 2007-9-8 Time: 14:02:17 To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ taglib prefix="s" uri="/struts-tags" %><html><head><title>Quiz Action Validation</title></head><body><s:form action="quizAction" namespace="/example" validate="true"> <s:textfield label="Name" name="name"/> <s:textfield label="Age" name="age"/> <s:textfield label="Favorite color" name="answer"/> <s:submit/></s:form></body></html>
特别说明(Ajax Validation):
为什么使用AJAX 校验?
纯的JavaScript校验不刷新页面,但是也不能使用所有的Struts2校验方法;服务端校验可以使用所有Struts2的校验方法,但是需要刷新页面。
Struts2 Ajax校验,既不需要刷新页面,又可以使用Struts2内置的所有的校验方法,所以我们比较倾向于使用Ajax校验。
现在(2007/09/08)Struts2的最新版本为2.0.9,还不支持dojo-plugin,所以还没有办法使用Ajax校验。所以要想使用Ajax Validation必须使用Struts2.1.0 SNAPSHOT版本。
- Struts2 校验(XML配置校验)
- Struts2 校验(XML配置校验)
- Struts2 校验(XML配置校验)
- struts2配置校验(xml)
- Struts2——框架校验(基于XML配置方式)
- Struts2系统学习(14)输入校验-基于XML配置方式实现校验
- struts2 xml validator 校验
- Struts2-校验器优先校验配置
- struts2验证框架——XML配置校验
- struts2基于xml配置方式对Action方法进行校验
- struts2 基于XML配置方式实现校验(指定方法)
- Struts2.0学习笔记---基于XML配置来进行校验
- 【Struts2十】校验表达二:使用xml配置validator来校验表单
- struts2校验(2)
- struts2对action中的方法进行输入校验---xml配置方式(3)
- struts2学习笔记----校验配置
- Struts2校验器文件配置
- Struts2.3 Ajax校验配置
- tingda.git上传SAE
- Yii2.0登录功能代码实现
- 杭电acm2098
- Android开发最佳实践
- Vim一些不起眼但非常有用的命令
- Struts2 校验(XML配置校验)
- web标准化设计:常用的CSS命名规则
- PHP随笔
- Android 自定义RadioButton 实现文字上下左右方向的图片大小设置
- [转帖]fstream的使用方法介绍
- mininet error: Cannot find required executable ovs-controller.
- 查询成功
- GOF 23 设计模式之 观察者模式(Observer)
- break 和 return 和 continue