zoukankan      html  css  js  c++  java
  • struts2 一个CRUD的BaseAction

    在struts2 in action中所见,这样封装后省去了大部分crud反复代码。尽管还不能理悟。先记下来。
    abstract class BaseAction extends ActionSupport {
    	
    	protected DB db;
    	protected static Log log = LogFactory.getLog(BaseAction.class);
    	private long requestId;
    	private boolean readOnly = false;
    	private String mappedRequest;
    	
    	@SkipValidation
    	public String show(){
    		setReadOnly(true);
    		setMappedRequest(Constants.LIST);
    		return SUCCESS;
    	}
    	
    	@SkipValidation
    	public String add(){
    		setMappedRequest(Constants.SAVE);
    		return SUCCESS;
    	}
    	
    	public String save(){
    		db.save(getModel());
    		return list();
    	}
    	
    	@SkipValidation
    	public String edit(){
    		setMappingRequest(Constants.UPDATE);
    		return SUCCESS;
    	}
    	
    	public String update(){
    		db.save(getModel());
    		return list();
    	}
    	
    	@SkipValidation
    	public String destroy(){
    		setReadOnly(true);
    		setMappingRequest(Constants.REMOVE);
    		return Constants.SUCCESS;
    	}
    	
    	public String remove(){
    		db.remove(getModel());
    		return list();
    	}
    	
    	@SkipValidation
    	public String list(){
    		setMappingedRequest(Constants.LIST);
    		return Constants.LIST;
    	}
    	
    	public String getActionClass(){
    		return getClass().getSimpleName();
    	}
    	
    	public String getDestination(){
    		return getClass().getSimpleName();
    	}
    	
    	public String getActionMethod(){
    		return mappedRequest;
    	}
    	
    	public void setActionMethod(String method){
    		this.mappedRequest = method;
    	}
    	
    	public void setMappedRequest(String actionMethed){
    		this.mappedRequest = getActionClass() + "_" + actionMethed;
    		log.debug("setting mappedRequest to "+ getActionClass() + "_" + actionMethed);
    	}
    	
    	public void setReadOnly(boolean readOnly){
    		this.readOnly = readOnly;
    		log.debug("setting readOnly to "+readOnly);
    	}
    	
    	public long getRequestId(){
    		return requestId;
    	}
    	
    	public void setRequestId(long requestId){
    		this.requestId = requestId;
    	}
    	
    	public void setDb(DB db){
    		this.db = db;
    	}
    	
    	public boolean isReadOnly(){
    		return readOnly;
    	}
    	
    	public abstract Object getModel();
    }


    
    

    public class MemberAction extends BaseAction implements ModelDriven,Preparable {
    	
    	private Member model;
    	
    	public Member getModel(){
    		return model;
    	}
    	
    	public void prepare() throws Exception{
    		if(getRequestId() == 0){
    			model = new Member();
    		}else{
    			model = (Member) db.get(getRequestId);
    		}
    	}
    }


  • 相关阅读:
    asp.net 一次性提交大量数据,服务器会报错,要在 web.config 中设置一下
    同一服务器上多个版本的 sqlserver ,如何连接,改变某一实例的端口号
    安装SQl 2008为SQL Server代理服务提供的凭据无效
    winserver2008 R2 64位 企业版 , IIS 配置运行 asp+access 网站
    获取屏幕分辩率及客户端信息
    如何使用 aspnetpager
    SQL函数:判断库、表、存储过程等是否存在
    NPOI封装类
    Python基础Day1
    HTML5_增强可访问性和解决IE兼容性问题
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/7119613.html
Copyright © 2011-2022 走看看