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 ...
随机推荐
- iOS 在不添加库的情况下 通过抽象类来获取自己想要的方法
#define SYSTEM_VERSION_MORE_THAN_BFDATA(v) ([[[UIDevice currentDevice] systemVersion] compare:v opti ...
- LintCode: Maximum Subarray
1. 暴力枚举 2. “聪明”枚举 3. 分治法 分:两个基本等长的子数组,分别求解T(n/2) 合:跨中心点的最大子数组合(枚举)O(n) 时间复杂度:O(n*logn) class Solutio ...
- 【linux】ubuntu中上下左右键变为^[[A^[[B^[[D^[[C问题处理
问题现象: 使用上下左右键时,结果为 ^[[A^[[B^[[D^[[C,如图: 原因在于ubuntu系统自带的 vi 不完整导致. 解决方法:安装完整的vi $ sudo apt-get instal ...
- Linux下验证码无法显示,Could not initialize class sun.awt.X1 解决方案
环境:Oracle Linux 6.4,JDK1.6,Weblogic11g 在通过java.awt生成图片验证码时,提示: Could not initialize class sun.awt.X1 ...
- QtWebkit包含的类简介
前言 WebKit从Qt 4.4开始被作为一个Module被集成到Qt中.简单的说,Qt webkit就是Qt对Apple公司webkit的支持而开发的库,主要包括以下几个类: QWebDatabas ...
- WIP 003 - Create page with a tablewalker
Need ability to delete records by click the trash can Need ability to add new records to database an ...
- SSH协议
SSH是一种协议,实现计算机之间的加密登录,即使被截获,截获的也只是加密后的密文,不会泄密. 如果每次登录另外一台计算机,都需要输入密码,就显得太麻烦,所以SSH协议实现了无密码登录,即公钥登录.所谓 ...
- 算法笔记_213:第七届蓝桥杯软件类决赛部分真题(Java语言C组)
目录 1 平方末尾 2 七星填数 3 打印数字 4 赢球票 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 平方末尾 平方末尾 能够表示为某个整数的平方的数字称为“平方数” 比如,25,64 虽然无 ...
- SpringBoot2中配置文件的调整,升级SpringBoot2时候注意的坑
原来使用SpringBoot1.5最近写个demo后发现原来的配置文件不能用了. 最后上网查询了一下资料,springboot2.0和spring1.x还是存在不少问题的. 1.问题一:Java版本要 ...
- rotate-list 旋转部分链表
Given a list, rotate the list to the right by k places, where k is non-negative. For example:Given1- ...