zoukankan      html  css  js  c++  java
  • struts2 中 Preparable 接口实现数据准备

      

      今天才知道struts还有Preparable接口,实现此接口需要实现其prepare()方法,调用action中其他方法之前会先调用prepare()方法。此接口和方法可以用于初始化一些数据。

    测试代码:

    package cn.qlq.action;
    
    import org.apache.struts2.convention.annotation.Action;
    import org.apache.struts2.convention.annotation.Namespace;
    import org.apache.struts2.convention.annotation.ParentPackage;
    import org.apache.struts2.convention.annotation.Result;
    
    import com.opensymphony.xwork2.ActionSupport;
    import com.opensymphony.xwork2.Preparable;
    
    @Namespace("/")
    @ParentPackage("default")
    public class FirstAction extends ActionSupport implements Preparable {
    
        private static final long serialVersionUID = 1L;
        private String test;
        @Override
        public void prepare() throws Exception {
            System.out.println("这是所有方法前的处理");
        }
    
        @Action(value = "test", 
                results = { @Result(name = "success1", location = "/index2.jsp", type = "redirect") ,
                            @Result(name = "error", location = "/index2.jsp") ,
                            @Result(name = "success" ,type = "json" , params = {"root","test"}) 
                            })
        @Override
        public String execute() throws Exception {
            test = "test";
            return super.execute();
        }
    
        public String getTest() {
            return test;
        }
    
        public void setTest(String test) {
            this.test = test;
        }
    
        
    }

    当我们访问execute方法的时候会先执行prepare()方法。

      另外,当action种有一个方法叫做haha(),我们可以定义一个prepareHaha()方法,则在访问haha()之前会先访问prepareHaha(),再访问prepare(),最后访问haha(),如下代码:

    package cn.qlq.action;
    
    import org.apache.struts2.convention.annotation.Action;
    import org.apache.struts2.convention.annotation.Namespace;
    import org.apache.struts2.convention.annotation.ParentPackage;
    import org.apache.struts2.convention.annotation.Result;
    
    import com.opensymphony.xwork2.ActionSupport;
    import com.opensymphony.xwork2.Preparable;
    
    @Namespace("/")
    @ParentPackage("default")
    public class FirstAction extends ActionSupport implements Preparable {
    
        private static final long serialVersionUID = 1L;
        private String test;
        @Override
        public void prepare() throws Exception {
            System.out.println("这是所有方法前的处理");
        }
    
        @Action(value = "test", 
                results = { @Result(name = "success1", location = "/index2.jsp", type = "redirect") ,
                            @Result(name = "error", location = "/index2.jsp") ,
                            @Result(name = "success" ,type = "json" , params = {"root","test"}) 
                            })
        @Override
        public String execute() throws Exception {
            test = "test";
            return super.execute();
        }
        
        public void prepareHaha() {
            System.out.println("haha 执行前面");
        }
        @Action(value = "haha" ,results ={@Result(name = "success", location = "/index2.jsp", type = "redirect")} )
        public String haha() throws Exception {
            return super.execute();
        }
    
        public String getTest() {
            return test;
        }
    
        public void setTest(String test) {
            this.test = test;
        }
    
        
    }

    结果:

      haha 执行前面
      这是所有方法前的处理

  • 相关阅读:
    不同类型的磁盘存储在Ubuntu下的性能测试
    Ubuntu16.04编译安装Redis Desktop Manager
    gnu screen的用法
    MySQL Workbench常用快捷键
    Libevent例子(二)
    Libevent例子(一)
    Ubuntu下的init.d管理update-rc.d
    Centos7 修改终端文字显示颜色
    通过socks tunnel设置http代理
    linux:C++的socket编程
  • 原文地址:https://www.cnblogs.com/qlqwjy/p/9392257.html
Copyright © 2011-2022 走看看