`
kobexing933
  • 浏览: 120393 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Struts2 校验(XML配置校验)

阅读更多

参考文档:
http://struts.apache.org/2.0.9/docs/ajax-client-side-validation.html
http://struts.apache.org/2.0.9/docs/pure-javascript-client-side-validation.html
http://struts.apache.org/2.0.9/docs/client-validation.html

参考示例:
http://struts.apache.org/2.0.9/docs/ajax-validation.html


Struts2 校验(XML配置校验)

基本说明:

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="" 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.cn
Date: 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版本。

下载:

使用Subversion可以从以下位置下载最新的Struts2的源代码:

http://svn.apache.org/repos/asf/struts/struts2/trunk

构造:

在下载的apps目录下blank子目录下可以使用如下命令

mvn compile jar:jar

可以在target目录中看到:struts2-blank.war

在plugins目录dojo子目录下使用如下命令

mvn compile jar:jar

可以在target目录中看到dojo-plugin:struts2-dojo-plugin-2.1.0-SNAPSHOT.jar

按照上述的说明构造AJAX校验

一些变化:

Struts 配置文件:

<action name="quizAjax" class="example.QuizAction">
<interceptor-ref name="jsonValidationWorkflowStack"/>
<result name="input">/example/quiz-ajax.jsp</result>
<result>/example/quiz-success.jsp</result>
</action>

这个interceptor是在Struts 2.1.0 才有的。

JSP文件:

<%--
Created by IntelliJ IDEA.
User:ma.zhao@dl.cn
Date: 2007-9-8
Time: 17:29:43
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>

<html>
<head>
<title>Validation - AJAX</title>
<sx:head />
</head>

<s:url id="url" namespace="/example" action="quizAjax"/>

<body>
<s:form method="post" theme="xhtml" namespace="/example" 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>
</body>
</html>

需要注意

<s:url id="url" namespace="/example" action="quizAjax"/>

提供了Dojo校验的URL,一定要注意。

分享到:
评论

相关推荐

    Struts2 校验器

    3. **配置校验规则**:Struts2的校验规则可以通过XML或注解方式定义。XML方式通常在struts.xml或相应的action类配置文件中定义,而注解方式则直接在Action类的属性上标注,例如使用`@RequiredString`、`@Size`等。 ...

    Struts2校验框架应用

    本文将深入探讨Struts2校验框架的应用,包括其核心概念、配置方式、以及如何在实际项目中实现数据验证。 **1. Struts2校验框架基础** Struts2的校验框架是基于Apache Commons Validator库的,它允许开发者定义校验...

    Struts2输入校验总结

    反之,如果校验失败,会转向`input`视图资源,通常是在Struts2配置文件中指定的,用于显示错误信息给用户。 #### 三、基于验证框架的输入校验 除了手动校验,Struts2还提供了一个强大的验证框架,支持更复杂的校验...

    struts2官方例子7-表单验证 xml形式的验证

    总结起来,Struts2的XML表单验证是通过创建XML文件定义验证规则,然后在Action类中处理数据,通过框架自动进行验证并返回错误信息。这种方式使得验证逻辑与业务逻辑分离,提高了代码的可维护性和复用性。对于大型...

    struts2校验器_xml格式

    "struts2校验器_xml格式"指的是使用XML文件进行Struts2中的表单验证配置。 XML格式的验证器在Struts2中提供了灵活和可扩展的方式来定义验证规则。这些规则定义了用户在表单中输入的数据应该如何被检查,以确保它们...

    struts2校验框架使用心得.txt

    为了使用Struts2框架,首先需要在项目的`web.xml`文件中配置过滤器。下面的示例展示了如何添加Struts2过滤器: ```xml &lt;filter-name&gt;struts2 &lt;filter-class&gt;org.apache.struts2.dispatcher.FilterDispatcher ...

    struts2校验框架

    Struts2校验框架的配置文件通常命名为`validation.xml`,并遵循特定的DTD格式。例如,以下是一段典型的校验配置示例: ```xml &lt;!DOCTYPE validators PUBLIC "-//OpenSymphonyGroup//XWork Validator 1.0.2//EN" ...

    struts2输入校验

    - **配置**:在`struts.xml`配置文件中启用JSR 303支持,添加`&lt;constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory" /&gt;`。 4. **自定义校验器**: 如果默认的...

    struts2输入校验深入总结

    Struts2集成了Apache Commons Validator,可以通过配置XML文件定义校验规则。在struts.xml文件中配置`&lt;validators&gt;`元素,然后在Action类中创建一个ValidatorForm对象,将表单字段映射到该对象的属性,即可应用预...

    struts2校验器与校验框架精彩学习笔记

    "04校验框架.doc"可能涵盖了Struts2校验框架的基本用法,包括XML配置、自定义校验规则、错误处理等方面的内容。而"03输入校验.doc"则可能侧重于实际的用户输入验证,探讨如何通过校验器确保用户提交的数据符合预期。...

    struts2标签+校验+SSH

    然后,配置Struts2的核心配置文件struts.xml,该文件位于WEB-INF/classes目录下,用于定义Action、Interceptor、结果页面等信息。 总结来说,Struts2作为一款强大的MVC框架,通过其无侵入式设计、拦截器、类型转换...

    Struts2的输入校验

    Struts2的输入校验配置主要通过XML文件进行,这个文件通常命名为`&lt;Action-name&gt;-validation.xml`,并放置在与Action类相同的包内。例如,一个名为`RegistAction`的Action对应的校验文件可能是`RegistAction-...

    struts2的数据校验

    Struts2提供了多种数据校验方式,包括基于注解的校验、基于XML配置的校验和自定义校验。 1. **基于注解的校验**: Struts2集成Spring的Validation框架,允许开发者在Action类的属性上使用JSR303/JSR349(Bean ...

    struts2 校验框架

    - Struts2允许通过XML配置文件定义校验规则,这些规则与Action类关联。在`struts.xml`中,你可以使用`&lt;validate&gt;`标签来指定一个Action对应的校验文件。 2. **校验文件**: - 校验规则通常存储在`.validate.xml`...

    Struts-config.xml配置详解

    Struts的配置文件通常命名为struts-config.xml,它是整个Struts应用的核心配置文件,通过定义一系列的XML元素来设定框架的不同功能和行为。下面将详细介绍struts-config.xml中8个主要配置元素的功能和使用方法。 1....

    struts2-login校验.rar

    总的来说,"struts2-login校验.rar"中的内容展示了如何使用Struts2框架实现用户登录功能,包括Action配置、拦截器使用、登录验证、页面跳转等核心概念,同时涉及到Tomcat服务器的部署和运行。这是一个基础但重要的...

    struts2中的输入校验

    - **XML配置文件**:Struts2支持基于XML的校验配置文件,分为局部校验配置文件和全局校验配置文件。局部校验文件针对单个Action类,而全局校验文件适用于整个应用。配置文件内容包括字段校验(field validation)和...

Global site tag (gtag.js) - Google Analytics