Struts2 校验(XML配置校验)

XML校验工具,可以用来进行XML合法性检验 W3C 校验XML的工具,XML校验工具,可以用来进行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的方式将数据提交到服务器,在校验出错的情况下在页面显示错误信息,但是不刷新页面,在校验成功的情况下,才向服务器提交请求。

 

三种方式比较

 普通的服务端校验方式客户端纯JavaScriptAjax方式
位置服务器客户端 服务器
是否刷新页面是否否
校验代码JavaJavaScriptJava
具体实现

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,一定要注意。

 

 

 

 

 
npm报错 npm WARN deprecated....的问题解决方式 报错 :npm WARN deprecated … 现象:无法进行有效的vue项目的部署以及npm install 命令的执行。 原因一:版本问题 说明:由于npm的版本过低或者过高导致的报错 检查版本: npm -v 如果版本是比较旧的,或者是最新的,这里可以进行对npm的更新和回退。 更新npm版本: npm updated -d 查看可以更新的版本 npm install -g npm 默认安装最新版本 安装回退指定的版本: npm updated -d 查看所有的版本 npm -g i. 阅读详情

相关推荐

Scratch(四十一):升级版垃圾分类

哈喽,大家好!之前给大家展示过“Scratch(二十四):垃圾分类”。今天呢,给大家展示的Scratch是`升级版垃圾分类`。接下来,我们一起看一下效果吧。

我可以很大侠的博客 6864

验证xml格式

原文链接http://zhhll.com.cn/2020/12/20/xml/xml%E7%9A%84%E6%A0%BC%E5%BC%8F/ 验证xml格式 DTD验证 可以使用DTD来定义XML文档的合法构建模块。DTD可以写在文档内部,也可以另外写一个文件 文档内部 <?xml version="1.0"?> <!DOCTYPE note [ <!ELEMENT note (to,from,body)>

Lxn2zh的博客 4775

用友U8其中一个账套提示演示期已到期-修复方法

【事件始末】 一朋友求助,反馈使用的用友U8,很多年了! 突然发现其中账套2021年的一个账套打不开,提示演示期限已到期! 但是其他账套完全正常,可以打开,没有任何问题。 不管是还原老旧备份,还是重装软件问题依旧,无法自己解决。 客户查询报表结算账期,情况比较紧急,于是求助我们。 经过多次反复琢磨和烟酒,终于于晚上23点59分给弄了出来,也总是圆满解决问题了。 【问题分析】 该用户打的是 U82X免狗补丁,估计是该补丁文件设置了 最大有效期,补丁到期了导致的。 也有可能是程序...

u010431289的博客 2万+

XMl Schema校验

1.Schema概要 XML是可扩展标记语言,也就是说其中的节点标记设置由用户定义生成。如果没有有效的办法来校验XML的合法性,往往会导致很多问题。因此xml通过校验达到合法性规范性,同时也可以对xml节点中的数据校验。 这次学习中,运用的XML校验是通过XML Schema(XSD)。其本身是一个XML文档,所以必须满足XML文档结构。在每个Schema文档中必须包含一个根元素。

BERRYL_weibo的博客 6862

AI应用架构师:用RAG解决大模型“幻觉”问题的客服架构设计

在当今的智能客服领域,大语言模型(LLM)凭借流畅的对话能力和强大的理解能力,逐渐取代传统规则式机器人,成为客服系统的核心。但随之而来的“幻觉”问题(即模型编造不存在的信息)却成了致命伤:比如客户问“你们的产品保修期多久”,AI客服可能会自信地回答“3年”,而实际保修期只有1年——这种错误不仅会误导客户,还可能引发投诉、退货甚至法律风险。

AI天才研究院 915

解决微信小程序长页面滚动到底部点击底部的输入框后输入框漂浮且页面滚动到顶部

一、问题描述 项目中有一个长页面上部展示部分信息下部为信息录入,页面长度为三屏幕(不同手机屏幕大小略有差异),当滚动到第二屏或者第三屏去填写信息时点击输入框后输入框漂浮起来了并且页面向上滚动了一段距离,回到了第一屏中展示的内容。效果如图。 滚动到第二屏,证件号输入。 点击输入框 可以看到证件号输入框漂浮了起来并且页面滚动到了第一屏展示的内容。 注意:小程序是2018年上线,在2020年4月份之前该页面从未出现过这种现象。推测:微信的后续更新中对微信小程序基础库进行了重构,导致点击输入框后页

仰望星空的代码 3258

XML 验证

XML 验证:确保文档结构与规则一致性 XML 验证指检查文档是否符合格式规范(Well-Formed)和结构约束(Valid)。通过DTD或XML Schema定义规则,验证可保证数据可靠性,广泛应用于Web服务(如SOAP)、配置文件和EPUB电子书。 验证方法比较 DTD:语法简单,支持元素/属性定义,但功能有限。 XML Schema:支持数据类型、复杂约束,适合高精度验证。 示例(C#验证代码): XmlDocument doc = new XmlDocument(); doc.Schemas.A

m0_57545130的博客 1683

滚雪球学Java(01):Java是什么?| 入门指南

🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!!

**My Coding Family** 626

使用xsd验证xml格式的正确性

3.该方式验证xml格式正确性,轻代码重xsd配置,但也有好处,当xml格式发生改变时,无需修改代码,只需要对应修改xsd即可,且相对代码来说,易上手。

qq_37016994的博客 4575

【学习系列】SAP RAP 7:行为定义-Draft

本文介绍了RAP框架中的草稿表(Draft)功能及其应用。草稿表允许用户临时保存数据,在激活前不影响业务逻辑,支持保存继续、暂存和设备切换功能。草稿分为独占草稿(仅限同一用户编辑)和协作草稿(允许多用户协同编辑)。启用草稿需在行为定义和投影中包含标准action,并创建包含TotalETag等管理字段的草稿表。TotalETag确保草稿转换时活动数据未被修改,而ETagmaster则防止并发修改。文章通过OData调用示例详细说明了ETag验证过程,强调草稿功能由RAP框架自动处理,开发者只需关注定义和配置

DeveloperMrMeng的博客 441

Python爬虫实战:基于最新技术栈的晋江文学城小说爬取

本文将详细介绍如何使用Python最新技术栈构建一个高效的晋江文学城小说爬虫。我们将从爬虫基础知识讲起,逐步深入到反爬机制应对、分布式爬虫设计以及数据存储优化等高级话题。文章包含完整的代码实现,使用aiohttp+asyncio实现异步爬取,Playwright处理动态渲染,并结合Redis实现分布式任务队列。本文旨在为读者提供一个全面的现代Python爬虫开发指南。网络爬虫(Web Crawler)是一种自动抓取互联网信息的程序,广泛应用于搜索引擎、数据分析和内容聚合等领域。

2201_76125261的博客 870

xml的校验

XML的校验是通过XML Schema(XSD) 或DTD文件的语法规范来校验的。

qq_38054251的博客 586

Allegro格式PCB转换成Pads操作指导

变量:AEX_BIN_ROOT 值:D: MentorGraphics>PADSVX1.2>SDD_HOME>translators>win32bin (值:软件按装的位置,可以是9.5版本,也可以是VX1.0等不同的版本)。变量:HOME 值:C:Users>win7>AppData>Roaming>SPB_Data (这个值是allegro快捷键存放位置器,也可以随意放置在那个盘,我们可以采用默认的路径)。第4步:打开 PADSLayout软件,然后选择导入文件,选择刚刚处理的 allegro文件。

weixin_54787054的博客 3717

Struts2基于的XML配置方式的输入校验

1. 回顾上节课的知识 请你描述下在服务端的Action组件中如何处理输入验证? 继承ActionSupport类,重写validate() 不合法的情况交给validate 合法的情况交给execute 编写ValidateLoginAction package cn.zhengbin.action; import org.apache.commons.lang3.StringUtils; import com.opensymphony.xwork2.ActionSupport; public

qq_52269841的博客 167

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Struts2:输入校验-基于XML配置方式实现

使用基于XML配置方式实现输入校验时,Action也需要继承ActionSupport,并且提供校验文件,校验文件和action类放在同一个包下,文件的取名格式为:ActionClassName-validation.xml,其中ActionClassName为action的简单类名,-validation为固定写法。如果Action类为cn.itcast.UserAction,那么该文件的取名应...

minGW_Lee on the way 724

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Struts2 基于XML配置方式实现对action的所有方法进行校验

Struts2 基于XML配置方式实现对action的所有方法进行校验:                  .校验文件命名规则XxxAction-validation-xml,放置位置:与当前Action目录同级。     xml配置内容:                                  "-//Apache Struts//XWork Validator 1.0

ShallowDreams的专栏 409

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

struts2 基于XML配置方式实现校验(指定方法)

Struts2 基于XML对指定方法的校验,配置和对所有方法一致,只需修改xml文件名称即可:ActionCalssName-ActionName-validation.xml。

ShallowDreams的专栏 525

【Struts2十】校验表达二:使用xml配置validator来校验表单

手动校验还是不大优雅,Struts2还提供了另外一种xml配置的方式校验表单! 在Action的同目录下添加一个xml文件,文件名严格限制为:Action类名-Action别名_方法名-validation.xml: 如:ValidateXMLAction-validateXMLAction_aaa-validation.xml 1.ValidateXMLAction:

温故而知新 574

Struts2输入校验(XML方式)及其国际化配置

本章主要介绍struts2的XML配置方式输入校验。以下将结合一个实例程序进行说明。代码结构:关键代码:RegistAction.javaregist.jspstruts.xml使用XML方式检验需创建一个XML配置文件,位置在对应的Action同级目录下,命名规则为:Action名-validatioin.xml。校验文件可以有两种写法,一种是字段校验,一种是非字段校验。字段校验就是以字段为主,...

qq_38136705的博客 549

【Struts2学习笔记(11)】对action的输入校验和XML配置方式实现对action的所有方法进行输入校验

(1)在struts2中,我们可以实现对action的所有方法进行校验或者对action的指定方法进行校验。 对于输入校验struts2提供了两种实现方法: 1. 采用手工编写代码实现。 2. 基于XML配置方式实现。

徐刘根的博客 2464

转载 - Struts2基于XML配置方式实现对action的所有方法进行输入校验

出处:http://www.cnblogs.com/Laupaul/archive/2012/03/15/2398360.html    http://www.blogjava.net/focusJ/archive/2010/11/15/367272.html 使用基于XML配置方式实现输入校验时,Action也需要继承ActionSupport,并且提供校验文件,校验文件和action类放在...

weixin_30602505的博客 123
上一篇: GWT入门介绍(使用JSON格式的数据通讯)
下一篇: Sruts2 Blog 文章总索引
struts2
博客等级 码龄19年 885粉丝 103原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值