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

  • 相关阅读:
    Centos7 安装RabbitMQ 3.6.1
    面向对象编程(类的绑定方法与非绑定方法)
    面向对象编程(封装、封装的意义、封装与扩展性、@property)
    函数式编程(__slots__)
    面向对象编程(实例属性、类属性)
    面向对象编程(获取对象信息)
    面向对象编程(继承、多态)
    函数式编程(访问限制)
    面向对象编程(类与实例)
    面向对象编程(基础简介)
  • 原文地址:https://www.cnblogs.com/yixueyuan/p/7268948.html
Copyright © 2011-2022 走看看