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);
    		}
    	}
    }


  • 相关阅读:
    Failed to load module "canberra-gtk-module"
    [Ubuntu18]桌面美化-仿MAC主题
    [Ubuntu]18自定义切换输入法的快捷键
    2016-2017-1 《信息安全系统设计基础》 学生博客及Git@OSC 链接
    2015-2016-2 《Java程序设计》 游戏化
    2015-2016-2 《Java程序设计》项目小组博客
    博客引用书单
    2015-2016-2 《网络攻防实践》 学生博客
    2015-2016-2 《网络攻击与防范》 学生博客
    《网络攻防技术与实践》学习指导
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/7119613.html
Copyright © 2011-2022 走看看