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 执行前面
      这是所有方法前的处理

  • 相关阅读:
    SVN 怎么让文件脱离 版本控制
    WEB开发中使用和理解 .net中的认证与授权
    三层,师姐把我点透了
    三层与养猪,加入自己的理解。
    Asp.net的登录验证方法Web.config访问权限配置
    <%=%> 引发的aspx文件、.aspx.cs文件和.aspx.designer.cs的一些说明
    bin。obj Properties文件夹
    JS得到对应字段 的值。遍历
    C#中页面传值的方法。转载
    $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • 原文地址:https://www.cnblogs.com/qlqwjy/p/9392257.html
Copyright © 2011-2022 走看看