struts系列:校验(一)XML校验和函数方法校验
一、jsp示例
<form action="login" method="post">
<div class="form-group has-feedback">
<s:fielderror></s:fielderror> //重点,放一块报错信息的空间
</div>
<div class="form-group has-feedback">
<input name="name" type="text" class="form-control" placeholder="Email" value="">
<span class="glyphicon glyphicon-user form-control-feedback"></span>
</div>
<div class="form-group has-feedback">
<input name="password" type="password" class="form-control" placeholder="Password" value="">
<span class="glyphicon glyphicon-lock form-control-feedback"></span>
</div>
<div class="row">
<div class="col-xs-8">
<div class="checkbox icheck">
<label>
<input type="checkbox"> Remember Me
</label>
</div>
</div>
<!-- /.col -->
<div class="col-xs-4">
<button type="submit" class="btn btn-primary btn-block btn-flat"><s:text name="loginSubmit"/></button>
</div>
<!-- /.col -->
</div>
</form>
二、action示例
@SuppressWarnings("serial")
public class LoginAction extends ActionSupport {
private static final transient Logger logger = LogManager.getLogger(LoginAction.class);
private String name;
private String password; public String execute() {
logger.debug("name={},password={}", name, password);
HttpServletRequest request = ServletActionContext.getRequest();
logger.debug("get locale = {}", request.getLocale());
if ("lings".equals(name)) {
return SUCCESS;
} else {
return INPUT;
} } public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
}
三、struts.xml示例
<action name="login" method="execute" class="com.sanro.strutsDemo.action.LoginAction">
<result name="success" type="tiles">tiger</result> //成功的跳转
<result name="input">/index.jsp</result> //校验失败的跳转
</action>
四、校验方式
1. XML校验
可以针对每个action建立一个校验文件,例如以示例action为例,需要建立一个LoginAction-validation.xml。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<!-- DTD文件信息见struts2-core-2.x.x.jar中的具体情况 -->
<validators>
<!--验证的每一个字段用filed表示 -->
<!--验证用户名 -->
<field name="name">
<!--指定使用的验证器,此处选择非空验证 -->
<field-validator type="requiredstring">
<!--验证失败的错误提示信息 -->
<message>用户名不能为空</message>
</field-validator>
</field> <!--验证pwd -->
<field name="password">
<!--密码非空 -->
<field-validator type="requiredstring">
<message>密码不能为空</message>
</field-validator> <!--密码长度验证 -->
<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">8</param>
<message>密码必须为6-8位!</message>
</field-validator>
</field>
</validators>
2. 在继承ActionSupport的action类中覆写validate()方法
@SuppressWarnings("serial")
public class LoginAction extends ActionSupport {
.....
@Override
public void validate() {
logger.debug("firstly, validate!!!");
// super.validate();
if (!password.equals("123456")) {
this.addFieldError("password", "对不起,password is error!");
} }
......
附录一、更多的内置校验器
struts2-core-2.x.x.jar\com\opensymphony\xwork2\validator\validators\default.xml
<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="creditcard" class="com.opensymphony.xwork2.validator.validators.CreditCardValidator" />
<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>
附录二、自定义校验器
XML自带的校验器有时不能满足我们的校验需求,可以考虑自建一个校验器。
struts系列:校验(一)XML校验和函数方法校验的更多相关文章
- 深入理解javascript函数系列第三篇——属性和方法
× 目录 [1]属性 [2]方法 前面的话 函数是javascript中的特殊的对象,可以拥有属性和方法,就像普通的对象拥有属性和方法一样.甚至可以用Function()构造函数来创建新的函数对象.本 ...
- 微软BI 之SSIS 系列 - 两种将 SQL Server 数据库数据输出成 XML 文件的方法
开篇介绍 在 SSIS 中并没有直接提供从数据源到 XML 的转换输出,Destination 的输出对象有 Excel File, Flat File, Database 等,但是并没有直接提供 X ...
- Python进阶----反射(四个方法),函数vs方法(模块types 与 instance()方法校验 ),双下方法的研究
Python进阶----反射(四个方法),函数vs方法(模块types 与 instance()方法校验 ),双下方法的研究 一丶反射 什么是反射: 反射的概念是由Smith在1982年首次提出的 ...
- Struts2输入校验(XML方式)
本章主要介绍struts2的XML配置方式输入校验.以下将结合一个实例程序进行说明. 代码结构: 关键代码: RegistAction.javapackage com.alfred.regist.ac ...
- struts2官方 中文教程 系列十三:利用通配符选择方法
介绍 在本教程中,我们将介绍如何在struts.xml中配置action节点以达到仅使用一个action节点将几个不同的url关联到特定action类的特定方法.这样做的目的是减少struts.xml ...
- 你真的会玩SQL吗?实用函数方法汇总
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...
- Atitit 发帖机系列(7) 词法分析的方法attilax大总结)
Atitit 发帖机系列(7) 词法分析的方法attilax大总结) 1.1. 词法分析貌似俩大方法,一个直接根据状态图转换,一个根据dfa1 1.2. switchcase或者ifelse 最原始方 ...
- 【函数】Oracle函数系列(2)--数学函数及日期函数
[函数]Oracle函数系列(2)--数学函数及日期函数 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不 ...
- 八、Android学习第七天——XML文件解析方法(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 八.Android学习第七天——XML文件解析方法 XML文件:exten ...
随机推荐
- 【高德地图Android SDK】视频教学
前两天参加了高德在北航举办的公开课,感觉非常不错.完成老师布置的作业之后,还顺利地拿到了高德开发者认证证书!! 现在来跟大家分享一下,如何快速学习[高德地图Android SDK]的开发.一天包会!连 ...
- 微软BI 之SSAS 系列 - 关于父子维度的设计
除了之前的几篇文章中出现的时间维度,雪花型维度的设计之外还有一种比较特殊的维度 - 父子维度.父子维度特殊就特殊在它包含了一种基于递归关系(Recursive Relationship)的引用结构, ...
- 安装MySQL-python报错:_mysql.c(42) : fatal error C1083: Cannot open include file: 'config-win.h': No such file or directory或者 build\lib.win-amd64-2.7\_mysql.pyd : fatal error LNK1120: 56 unresolved externa
解决办法1: 直接下载MySQL-python-1.2.5.win-amd64/32-py2.7.exe,点击安装 此处要注意自己安装的Python和MySQL版本是64位还是32位,否则在进行安装M ...
- 字符串匹配算法——BF、KMP、Sunday
一:Brute force 从源串的第一个字符开始扫描,逐一与模式串的对应字符进行匹配,若该组字符匹配,则检测下一组字符,如遇失配,则退回到源串的第二个字符,重复上述步骤,直到整个模式串在源串中找到匹 ...
- requestsManager:didFailRequest:withError: Error Domain=com.albertodebortoli.goldraccoon Code=-1000 "(null)" UserInfo={message=Unknown error!}
场景:最近IOS开发中需要用到FTP上传,最初是用GoldRaccoon 看后台FTPServer日志,一直都是disconnected.自己对FTP也是懂些皮毛,所以只剩下一坑的无奈.FTP服务器是 ...
- java 判断String字符串是不是json数据
java 判断String字符串是不是json数据 CreationTime--2018年8月24日18点23分 Author:Marydon JSONObject jo = null; try ...
- SpringBoot集成redisson分布式锁
官方文档:https://github.com/redisson/redisson/wiki/%E7%9B%AE%E5%BD%95 20180226更新:增加tryLock方法,建议后面去掉Distr ...
- 7、redis之使用spring集成commons-pool来操作常见数据类型
环境的搭建参见:http://www.cnblogs.com/yangzhilong/p/4729857.html 下面直接贴具体的测试代码: package com.yzl; import java ...
- java第八节 GUI/图形用户界面
/* *第8讲 GUI/图形用户界面 * AWT的基础知识 * GUI全称是Graphical User Interface,即图形用户界面 * JDK中提供了AWT和Swing两个包,用于GUI程序 ...
- redis对key的基本操作
不忘初心,励志前行 del key1 key2 ... Keyn作用: 删除1个或多个键返回值: 不存在的key忽略掉,返回真正删除的key的数量 rename key newkey作用: 给key赋 ...