感谢博主  谢谢  再次感谢

<s:textfield name="user.username" label="用户名"/>

这个name与你action中的javabean联系起来,会自己收集值(前提是你在action 中引入了user有get/set方法 ,且user实现 了javabean特点类)

而labe是用来显示这个框是用来干吗的,效果如图 :

代码是:

如果要实现表单验证:

在struts.xml中对应的action中result必须有一个是input返回的字符串

如果只想显示某个错误!

<-------------------------------------------------------------------------------------第二种:用配置文件的方式来实现------------------------------------------------------------------------------------------------->

配置文件 里的内容为:

效果如图:

action还是必须继承actionsupport

<------------------------------------------------------------------------------------动作校验------------------------------------------------------------------------------------------------->

需求是这样的:当你填年龄的时候,你必须填的比你账户的数值大:

AddUserAction-validation.xml文件中的源码是:

<!DOCTYPE validators PUBLIC"-//Apache Struts//XWork Validator 1.0.2//EN""http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd"><validators><field name="user.username"><field-validator type="requiredstring"><message>请输入用户名</message></field-validator></field><field name="user.password"><field-validator type="requiredstring"><message>请输入密码</message></field-validator></field><field name="user.password"><field-validator type="requiredstring"><message>请输入密码</message></field-validator></field><validator type="expression"><param name="expression"><![CDATA[user.age>=user.account]]></param><message>年龄必须在${user.account}岁以上,你输入的是${user.age}</message></validator>
</validators>

需要在input对应的页面中加入<s:actionerror/>

在xwork-core-2.3.16.jar包下的com.opensymphony.xwork2.validator.包中可以找到default.xml,里面有些我们需要的信息

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC"-//Apache Struts//XWork Validator Definition 1.0//EN""http://struts.apache.org/dtds/xwork-validator-definition-1.0.dtd"><!-- START SNIPPET: validators-default -->
<validators><validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/><validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/><validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/><validator name="long" class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator"/><validator name="short" class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator"/><validator name="double" class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/><validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/><validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/><validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/><validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/><validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/><validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/><validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/><validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/><validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/><validator name="conditionalvisitor" class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator"/>
</validators>
<!--  END SNIPPET: validators-default -->

换成相应的type值就可以对相应的要求进行校验

<-------------------------------------------------------------------------------------自己实现自定义的校验类------------------------------------------------------------------------------------------------->

我们要实现校验一个文本框中,不能有中文,有中文,没有一个中文来。这是需求

中文一个字符有2个字节,一个英文数字等其它占一个字节,所以根据这个来判断

package buaa.util;import com.opensymphony.xwork2.validator.ValidationException;
import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport;public class ChineseValidator extends FieldValidatorSupport {/*** 表示是否包含有中文,现有3种模式: none 没有中文字符 some 含有中文字符,默认值 all 全是中文字符*/private String mode = "all";private void setMode(String mode) {this.mode = mode;}public void validate(Object object) throws ValidationException {// 获取字段名final String fieldName = this.getFieldName();// 获取字段值final String fieldValue = (String) this.getFieldValue(fieldName, object);// 字节数final int bytes = fieldValue.getBytes().length;// 字符数final int chars = fieldValue.length();System.out.println("现在的状态是:"+mode);if (mode.equals("none")) {// 现在要求全不是中文字符// 所以字节数和字符数据,两个数字必须相等if (chars != bytes) {this.addFieldError(fieldName, object);}} else if (mode.equals("some")) {// 现在要求含有中文字符/*** 所以字节数据 与字符数据 必做不相等,相等则出错 另外,如果字节数据 是字符数据 的两倍,表示全是中文字符,也出错*/if (chars == bytes || chars * 2 == bytes) {this.addFieldError(fieldName, object);}} else if (mode.equals("all")) {/** 现在要求全是中文字符所以字节数 是字符数的两倍,否则出错 */if (chars * 2 != bytes) {this.addFieldError(fieldName, object);}}}}

上面这个类继承了 FieldValidatorSupport且实现了它的抽象方法 validate(Object object) 。

添加一个validators.xml文件

位置:

内容为:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC"-//Apache Struts//XWork Validator Definition 1.0//EN""http://struts.apache.org/dtds/xwork-validator-definition-1.0.dtd"><!-- START SNIPPET: validators-default -->
<validators><!--自定义的--><validator name="chinese" class="buaa.util.ChineseValidator" /><!--默认的    --><validator name="required"class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator" /><validator name="requiredstring"class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator" /><validator name="int"class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator" /><validator name="long"class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator" /><validator name="short"class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator" /><validator name="double"class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator" /><validator name="date"class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator" /><validator name="expression"class="com.opensymphony.xwork2.validator.validators.ExpressionValidator" /><validator name="fieldexpression"class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator" /><validator name="email"class="com.opensymphony.xwork2.validator.validators.EmailValidator" /><validator name="url"class="com.opensymphony.xwork2.validator.validators.URLValidator" /><validator name="visitor"class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator" /><validator name="conversion"class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator" /><validator name="stringlength"class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator" /><validator name="regex"class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator" /><validator name="conditionalvisitor"class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator" />
</validators>

校验文件AddUserAction-validation.xml的内容为

<!DOCTYPE validators PUBLIC"-//Apache Struts//XWork Validator 1.0.2//EN""http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd"><validators><field name="user.username"><field-validator type="chinese"><param name="mode"></param><message>用户名,全为中文</message></field-validator></field><field name="user.password"><field-validator type="requiredstring"><message>请输入密码</message></field-validator></field><field name="user.password"><field-validator type="requiredstring"><message>输入密码不一致</message></field-validator></field><validator type="expression"><param name="expression"><![CDATA[user.age>=user.account]]></param><message>年龄必须在${user.account}岁以上,你输入的是${user.age}</message></validator>
</validators>

效果为:

实践的时候出了点状况,还没有分析出来原因:

总结:让页面显示校验不通过,提示出来的信息,二种方式:

1、对于字段验证错误来说,在<s:form>使用xhtml风格的时候(默认是这种风格),<s;textfield/>标签会将这个字段的错误信息显示在这个文本框的上边。

2、还可用<s:fielderror/>标签来将字段验证错误信息显示在指定位置,如果不指定其fieldName属性则会显示所有的错误,如果指定了fieldName属性则会显示指定字段的错误.

注意:对于动作验证错误,可以使用<s:actionerror/>标签,它会把所有的动作验证错误显示在指定的位置。

验证器短路:

大概意思就是一个文本框中有需要验证,默认是即使第一验证不通过,也继续验证,但如果设置了某个属性,一旦第一个没有通过,后面的就不执行了

struts2标签和表单验证相关推荐

  1. Spring4 MVC表单验证代码示例

    在这篇文章中,我们将学习如何使用Spring表单标签, 表单验证使用 JSR303 的验证注解,hibernate-validators,提供了使用MessageSource和访问静态资源(如CSS, ...

  2. struts2官方 中文教程 系列六:表单验证

    先贴个本帖的地址,以免被爬:struts2教程 官方系列六:表单验证  即 http://www.cnblogs.com/linghaoxinpian/p/6906720.html 下载本章节代码 介 ...

  3. Struts2中UI标签之表单标签介绍

    1.在Struts2中UI标签的表单标签分为两种:form标签本身和单个表单标签. 2.Struts2表单标签包括:form.textfield.password.radio.checkbox.che ...

  4. 框架生成的HTML修改,Django框架form表单验证 修改html标签的样式

    经过前面的学习,我们大致可以知道CharField.EmailField等等以Field结尾的方法,只能帮助我们对用户发来的信息做验证,不能生成html标签.字段本身自己虽然只做验证,但是我们可以通过 ...

  5. struts2 表单验证

    表单验证有两种方式,代码验证和xml配置验证器验证.每种方法都可以设置全局验证和单个方法验证.感觉单个方法用的多一点. 例子:用户注册,进行验证.表单如下 <!--设置错误显示格式--> ...

  6. 【HTML5初探之form标签】解放表单验证、增加文件上传、集成拖放

    导航 [初探HTML5之使用新标签布局]用html5布局我的博客页! [HTML5初探之form标签]解放表单验证.增加文件上传.集成拖放 [HTML5初探之绘制图像(上)]看我canvas元素引领下 ...

  7. [JavaWeb基础] 015.Struts2 表单验证框架

    在web开发的过程中,我们经常要用到一些填写表单的操作,我们一般都要在提交表单信息的时候对表单的内容进行验证,struts2给我们提供了简单的实现接口,让我们可以很容易的对表单进行验证.下面讲解下最传 ...

  8. jsf表单验证_JSF验证示例教程–验证器标签,定制验证器

    jsf表单验证 JSF validation model defines a set of standard classes for validating the UI components. The ...

  9. struts2的表单验证validation.xml

    转载自:http://blog.csdn.net/vipmao/article/details/51199388 struts2中提供自带的表单验证方式.验证方式大致有一下几种. required:必 ...

最新文章

  1. linux vim 基本操作
  2. linux 明文创建密码,linux下抓取内存中明文密码mimipenguin
  3. 在window平台运行Dubbo的一个小demo
  4. 递归二分法php,PHP基于二分法实现数组查找功能示例【循环与递归算法】
  5. Gentoo 安装日记 09 (安装stage3:下载内核)
  6. 4:springApplication.run 原理
  7. valgrind 常见错误提示信息
  8. 数据库SQL语句学习笔记(6)-使用函数处理数据
  9. 转化关系模型外键_网站数据分析:流量运营分析模型拯救你的广告流量
  10. Linux命令sort的常用用法
  11. Linux命令:SAMBA配置与win10共享
  12. sublime text3 快捷方式汇总
  13. Atitit图片复制父目录给你设计的实现 基于win 图片浏览器
  14. CSDN账号登录异常,一个网址帮你找回账号
  15. 你需要了解的App经济学基础 转
  16. linux vga 分辨率低,通过 VGA 接口连接显示器时分辨率不正确
  17. 计算机硬件仿真实验软件,计算机硬件实验虚拟仿真平台的设计
  18. 【Python爬虫Scrapy框架】一、Scrapy爬虫框架的入门案例
  19. 找一下不男不女 ?。。?
  20. Vuforia SDK导入问题Vuforia.UnityExtensions Consider removing one of the references or sign the assembl

热门文章

  1. uniapp-打包APP踩坑日记
  2. Jetson Nano 源码编译安装PySide6
  3. 刚出的nvidia的GTX1080
  4. java 取整数_java中的三种取整函数
  5. 操作系统的发展史(科普章节)
  6. MFC之MessageBox、AfxMessageBox用法
  7. CoInitialize浅析二
  8. 私服的安装、启动和私服的配置
  9. CentOS 7.4安装Nginx 1.14.0
  10. 解决DCS信号干扰的有效方法