zoukankan      html  css  js  c++  java
  • 《Java从入门到放弃》入门篇:Struts2的常用验证方式(二)

    前一回,我们讲完了“直接在功能方法中写验证代码”这种验证方式,接下来,我们继续搞定后续的三种方式。

    二、重写validate方法(注意这个方法会验证该类中所有的方法)

        使用重写验证方法的好处就是,又可以少写一句代码了!!!!

        2.1)修改Action类,在其中添加valiate方法,把之前写在add方法中的验证代码剪切过来

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
        //修改后的add方法
        public String add() {
            System.out.println("调用了添加的方法!");
            System.out.println("编号:"+singer.getSingerID());
            System.out.println("姓名:"+singer.getSingerName());
            System.out.println("地区:"+singer.getArea());
            System.out.println("留言:"+msg);
    //        if(this.hasErrors()){
    //          return INPUT;
    //        }
            return "add";
        }
        //没有写任何返回值,但只要调用了addFieldError方法,则默认返回INPUT
        @Override
        public void validate() {
            //编号必须是六位的数字
            if(Integer.toString(singer.getSingerID()).length()!=6){
                this.addFieldError("err_id""编号必须是6位的数字");
            }
            //姓名不能为空
            if("".equals(singer.getSingerName().trim())){
                this.addFieldError("err_name""姓名不能为空");
            }
        }

        2.2)打开对应页面,localhost:8888/strutsDemo/singeradd.action,结果如下:

    wKiom1l--djxg4jxAAAexUDbPjU582.png-wh_50

    使用上面这种方法要注意,现在就算访问别的方法(除add外的其他方法),也会调用该验证。

    我们在validate方法中加一句代码,来看看效果

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        @Override
        public void validate() {
            //新增的一句代码
        System.out.println("调用了验证方法");
        //编号必须是六位的数字
            if(Integer.toString(singer.getSingerID()).length()!=6){
                this.addFieldError("err_id""编号必须是6位的数字");
            }
            //姓名不能为空
            if("".equals(singer.getSingerName().trim())){
                this.addFieldError("err_name""姓名不能为空");
            }
        }

    接下来,通过http://localhost:8888/strutsDemo/smng_update.action,调用update方法,可以看到效果如下图:

    wKioL1l_-WXDkhUxAAAlkcBdwCE124.png-wh_50

    我们希望每个验证方法只验证其对应的操作,如何解决这个问题呢?这就要用到第三种方式,请Look

    三、使用ValidateXxx方法(Xxx对应要验证的方法的方法名)

        在前一种方式的基础上,我们把validate的方法名改成validateAdd,并去掉Override注解,就实现了第三种方法(我就喜欢这样的方式,因为········,不用再贴代码和截图。),大家改完就可以再访问对应的功能试试。

        如果有问题,那就···········自行解决吧,好吧,好人做到底,如果报错,注意看错误提示,wKioL1l_-nyy3EyqAAAIqBsJCWY837.png-wh_50,如果只是查看调用与否,请把两个if语句注释,就可以解决这个问题了。最终结果如下,只有添加方法调用了验证:

    wKioL1l_-xuhMGaUAAAHGWn37mo376.png-wh_50

    至于第四种方式,我们就不在入门篇里讲了,各位看官如果有兴趣,可以先自行研究。

    今天的内容这到儿就结束了,是不是很轻松!!! j_0003.gif

  • 相关阅读:
    姐姐的vue(1)
    LeetCode 64. Minimum Path Sum 20170515
    LeetCode 56. 56. Merge Intervals 20170508
    LeetCode 26. Remove Duplicates from Sorted Array
    LeetCode 24. Swap Nodes in Pairs 20170424
    LeetCode 19. Remove Nth Node From End of List 20170417
    LeetCode No.9 Palindrome Number 20170410
    LeetCode No.8. String to Integer (atoi) 2017/4/10(补上一周)
    LeetCode No.7 Reverse Integer 2017/3/27
    LeetCode No.4 Median of Two Sorted Arrays 20170319
  • 原文地址:https://www.cnblogs.com/yixueyuan/p/7268948.html
Copyright © 2011-2022 走看看