Struts学习之手动验证

* 首先要从页面中获取对应的标签name属性的值,在动作类action中声明同名的属性,提供get和set方法
    * 要继承ActionSupport类或者实现Validateable接口
    * 重写Validateable接口的validate()方法
        * 前提是:要保证setUsername()、validate()、login()方法要按照这个先后顺序执行
    * 如果登录失败,如何处理:
        * this.addFieldError( key, value);
            * key:错误提示字段
            * value:错误提示信息
    * 什么时候才是验证通过?
        * 验证通过:1、map集合不存在;2、map集合存在并为空
        * 验证不通过:map集合存在并且不为空
    * 分析需求:
        * 用户名不能为null ,""
        * 密码不能为null, "" ,并且密码的长度6-12之间
    * 针对所有业务方法进行验证还是针对某个指定业务方法进行验证?
        * 重写的validate()方法,针对所有业务方法进行验证
        * 重写的validate()方法加上要验证的指定的业务方法名(业务方法名的首字母大写),实现针对某个指定的业务方法进行验证
            * 为什么要这样进行拼接?因为struts2框架底层拼接,如果不这样写,底层就找不到对应方法名
struts2框架验证(xml方式):
    * 首先要从页面中获取对应的标签name属性的值,在动作类action中声明同名的属性,提供get和set方法
    * 创建一个xml格式验证文件:
        * 命名方式:ActionClassName-validation.xml,ActionClassName指的是动作类action的名称
        * <validators>标签:根元素
        * field:指定action中要校验的属性,实际上就是页面中表单的name属性的值
            * name:指定页面中表单的name属性的值
        * field-validator:指定验证规则
            * type:指定验证规则名称,
                    struts2框架提供的验证规则放在xwork-core-xxx.jar
                    下的com\opensymphony\xwork2\validator\validators
                    的default.xml配置文件。
        * param:向底层的验证规则传递的参数
        * message:验证失败时,提供的错误提示信息
    * 如果要对指定方法进行验证的话:
        * xml验证文件的命名方式:ActionClassName-ActionName-validation.xml,
                                ActionName对应的是struts.xml文件对应的action标签的name属性的值
    
   

转载于:https://www.cnblogs.com/sunfie/p/4704447.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/375670.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《启示录-打造用户喜爱的产品》读书小结

2014年大学毕业和研究生入学之间的暑假&#xff0c;我读完了这本书。该书主要内容为介绍产品经理的一些工作经验。分三方面内容系统介绍&#xff1a;人员、流程和产品。第一遍读后&#xff0c;了解了一些产品经理的工作内容&#xff0c;也学习了很多优秀产品经理的理念。转载于…

循环多少次?

循环多少次&#xff1f; Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 17 Accepted Submission(s) : 12 Problem Description我们知道&#xff0c;在编程中&#xff0c;我们时常需要考虑到时间复杂度&#xff0…

关于数据库表的“记录”与“字段”

何谓表的记录&#xff1a; 就是数据库中的一张表中的随便任意一行称之为记录 何谓表的字段&#xff1a; 就是数据库中的一张表中的随便任意一列称之为字段转载于:https://www.cnblogs.com/cyh2009/p/4706021.html

error: use of deleted function

本文案例仅供参考 出错的代码如下&#xff1a; TEST(Test, test1) {TestImpl impl TestImpl(para1, para2);ASSERT_EQ("jkj", impl.func("22", "33", "44")); }实际应该这样&#xff1a; TEST(Test, test1) {TestImpl impl(para1, …

WPF PasswordBox不支持绑定解决方法

PasswordBox的Password属性因为安全原因不支持直接绑定&#xff0c;可以使用依赖属性实现。直接插入代码 public class PasswordBoxHelper{public static readonly DependencyProperty PasswordProperty DependencyProperty.RegisterAttached("Password",typeof(stri…

error: expected unqualified-id before 'public'

Error Coding class A{ }&#xff1b;class B public : A { };Correct Coding class A{ };class B : public A{ };

C# 方法返回值的个数

方法返回值类型总的来说分为值类型&#xff0c;引用类型,Void 有些方法显示的标出返回值 public int Add(int a,int b) {return ab; } 有些方法隐式的返回返回值&#xff0c;我们可以将上面的方法改改&#xff1a; public void Add(int a,int b,out int sum) {sumab; } 怎么样&…

【Java】Java里String 的equals和==

Java里面有对象和对象的引用的概念&#xff0c;在String方面&#xff0c;比较的是引用&#xff0c;equals比较的是对象的具体值。 String s1 new String("abc");String s2 new String("abc");System.out.println(s1 s2);System.out.println(s1.equals(s…

marked override, but does not override

检查这个函数对应的基类函数 看是否是虚函数看函数参数是否对应

STL中的lower_bound和upper_bound的理解

STL迭代器表述范围的时候&#xff0c;习惯用[a, b)&#xff0c;所以lower_bound表示的是第一个不小于给定元素的位置 upper_bound表示的是第一个大于给定元素的位置。 譬如&#xff0c;值val在容器内的时候&#xff0c;从lower_bound到 upper_bound表示的就是整个容器中与val相…

because the following virtual functions are pure within

构建了包含纯虚函数的对象 包含纯虚函数的类不能实例化为对象

C ~ 链式队列与循环队列

此处的链式与循环队列可以应用于BFS和树的层序遍历。下面是对其结构和基本操作的程序描述。 1、循环队列 解决循环队列的队空和队满的方法&#xff1a; [1].增加一个参数count&#xff0c;用来记录数组中当前元素的个数&#xff1b; [2].为避免队空和满两状态混淆&#xff0c;少…

Hexo之部署github

最近开始学NodeJs&#xff0c;准备也在github上弄个一个Hexo博客练练过程中遇到一些问题总结一下。希望对遇到同样问题的同学能有个帮助少走一些弯路。 - 其实用windows或mac客户端直接去同步很顺利没遇到什么问题。主要是在使用Hexo deploy命令的时候。 我的配置文件deploy部分…

You have unstaged changes.

执行git rebase出错 原因&#xff1a;有未提交的修改 解决&#xff1a;执行git stash暂时保存修改&#xff0c;rebase后&#xff0c;执行git stash pop

[bootstrap] 打造一个简单的系统模板(1) 左侧折叠菜单

1. 前言 最近需要做一个后台管理系统&#xff0c;我打算使用bootstrap弄一个好看的后台模板。网上的好多模板我觉的css和js有点重。 于是就打算完全依靠bootstrap搭建一个属于自己的模板。 首先从左侧的折叠菜单开始。看图。 2. CSS 代码 以下是自定义的css代码&#xff0c;由于…

将gcc/g++链接到指定版本

安装指定版本&#xff1a; sudo apt-get install gcc-4.8 sudo apt-get install g-4.8以上命令默认安装的为4.8.5版本&#xff0c;支持c11 建立软连接 cd /usr/bin如果已经装有gcc或者g&#xff0c;需要先移除原先的软连接sudo rm gcc sudo rm g建立新的软连接 sudo ln -s g…

23种设计模式的优点与缺点概况

设计模式 标签&#xff08;空格分隔&#xff09;&#xff1a; 设计模式优点 应用场景 整理自《设计模式之禅》 单例模式 优点&#xff1a; 只有一个实例&#xff0c;减少了内存开支&#xff1b;可以避免对系统资源的多重占用&#xff1b;可以在系统中设置全局的访问点&#xff…

How Many Shortest Path

zoj2760:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode2760 题意&#xff1a;给你一张有向带权图&#xff0c;然后问你最短路径有多少条。 题解&#xff1a;这一题用到了网络流&#xff0c;一开始&#xff0c;我想到用找到一条最短路&#xff0c;然后删除这条…

pat00-自测5. Shuffling Machine (20)

00-自测5. Shuffling Machine (20) 时间限制400 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者CHEN, YueShuffling is a procedure used to randomize a deck of playing cards. Because standard shuffling techniques are seen as weak, and in order to avoid …

E488: Trailing characters:

情景&#xff1a; 对vim进行配置&#xff0c;配置完成后进行保存&#xff0c;配置完成后打开其他文件时报错。原因&#xff1a; vim 配置文件中保存不合乎语法的语句&#xff0c;报错时如下&#xff1a; #显示行号 set number#字符导致的错误&#xff0c;改成"即可。 vi…