一、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校验和函数方法校验的更多相关文章

  1. 深入理解javascript函数系列第三篇——属性和方法

    × 目录 [1]属性 [2]方法 前面的话 函数是javascript中的特殊的对象,可以拥有属性和方法,就像普通的对象拥有属性和方法一样.甚至可以用Function()构造函数来创建新的函数对象.本 ...

  2. 微软BI 之SSIS 系列 - 两种将 SQL Server 数据库数据输出成 XML 文件的方法

    开篇介绍 在 SSIS 中并没有直接提供从数据源到 XML 的转换输出,Destination 的输出对象有 Excel File, Flat File, Database 等,但是并没有直接提供 X ...

  3. Python进阶----反射(四个方法),函数vs方法(模块types 与 instance()方法校验 ),双下方法的研究

    Python进阶----反射(四个方法),函数vs方法(模块types 与 instance()方法校验 ),双下方法的研究 一丶反射 什么是反射: ​ 反射的概念是由Smith在1982年首次提出的 ...

  4. Struts2输入校验(XML方式)

    本章主要介绍struts2的XML配置方式输入校验.以下将结合一个实例程序进行说明. 代码结构: 关键代码: RegistAction.javapackage com.alfred.regist.ac ...

  5. struts2官方 中文教程 系列十三:利用通配符选择方法

    介绍 在本教程中,我们将介绍如何在struts.xml中配置action节点以达到仅使用一个action节点将几个不同的url关联到特定action类的特定方法.这样做的目的是减少struts.xml ...

  6. 你真的会玩SQL吗?实用函数方法汇总

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  7. Atitit 发帖机系列(7) 词法分析的方法attilax大总结)

    Atitit 发帖机系列(7) 词法分析的方法attilax大总结) 1.1. 词法分析貌似俩大方法,一个直接根据状态图转换,一个根据dfa1 1.2. switchcase或者ifelse 最原始方 ...

  8. 【函数】Oracle函数系列(2)--数学函数及日期函数

    [函数]Oracle函数系列(2)--数学函数及日期函数 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不 ...

  9. 八、Android学习第七天——XML文件解析方法(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 八.Android学习第七天——XML文件解析方法 XML文件:exten ...

随机推荐

  1. LintCode: Search A 2d Matrix

    1. 设查找的数位y,第一行最后一列的数位x 如果x<y,x是第一行最大的,所以第一行都小于y,删除第一行: 如果x>y,x是最后一列最小的,所以最后一列都大于y,删除最后一列: 这样保证 ...

  2. HttpLuaModule——翻译(二)

    access_by_lua access阶段.事例: location / { deny 192.168.1.1; allow ; allow ; deny all; access_by_lua ' ...

  3. Spring Boot 之 RESTfull API简单项目的快速搭建(二)

    1.打包 -- Maven build 2.问题 [WARNING] The requested profile "pom.xml" could not be activated ...

  4. css 如何使图片与文字在div中居中展示?

      1.情景展示 如何将图片与文字在div中一起居中展示? HTML片段 <div style="background: #fff;padding-top: 5px;border:1p ...

  5. 【DB2】建造测试数据

    建表语句 CREATE TABLE     FUND_DAILY_INCOME     (         ID BIGINT NOT NULL GENERATED ALWAYS AS IDENTIT ...

  6. zuul(springboot)设置静态资源代理和默认首页代码一例

    直接上代码: public class StaticResourcesConfig extends WebMvcConfigurerAdapter { private static final Log ...

  7. C#让控制台程序不显示闪退窗口的方法

    新建一个控制台程序,然后编译为 窗体程序.即可........

  8. 转:Linux网卡驱动程序编写

    Linux网卡驱动程序编写 [摘自 LinuxAID] 工作需要写了我们公司一块网卡的Linux驱动程序.经历一个从无到有的过程,深感技术交流的重要.Linux作为挑战微软垄断的强有力武器,日益受到大 ...

  9. 安装win和xp双系统 若干问题

    装了winxp和linux双系统,后先在winxp下手动格式化了linux系统,后启动时提示grub错误,重新分区后系统也 2010-09-17 21:07 [清风剑] | 分类:Linux | 浏览 ...

  10. android使用GestureDetector实现手势下滑关闭页面的效果。

    实现类似Android风云直播手机端注册登录页,当手势向下滑动的时候,关闭页面的效果. 使用GestureDetector来实现这个效果,当手势在屏幕上面滑动的时候 ,会掉用onFling方法,所以, ...