首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

Struts2 校验(XML配备校验)

2012-08-31 
Struts2 校验(XML配置校验)http://www.35java.com/zhibo/forum.php?modviewthread&tid366&extrapage%3D

Struts2 校验(XML配置校验)
http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=366&extra=page%3D3
基本说明:

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的方式将数据提交到服务器,在校验出错的情况下在页面显示错误信息,但是不刷新页面,在校验成功的情况下,才向服务器提交请求。
三种方式比较
普通的服务端校验方式 客户端纯JavaScript Ajax方式
位置 服务器 客户端  服务器
是否刷新页面 是 否 否
校验代码 Java JavaScript Java
具体实现             1 定义Action类
                Action.java
            2 定义配置文件
                Action-validation.xml
            3 在struts.xml中定义action,注意由于使用了validation,所以必须定义input名字的result。
                <action name="" >
                <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" 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版本。

热点排行