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

  • 相关阅读:
    openstack 介绍
    python实现图片批量剪裁的程序
    iOS开发多线程篇—GCD介绍
    block代码块介绍
    ios中的界面跳转方式
    NSNotificationCenter消息机制的介绍
    ios的手势操作之UIGestureRecognizer浅析
    collectionViewFlow的界面编写
    UITableView的简单应用介绍
    滚动视图创建
  • 原文地址:https://www.cnblogs.com/qlqwjy/p/9392257.html
Copyright © 2011-2022 走看看