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


  • 相关阅读:
    qt鼠标事件总结(坐标,跟踪,点击判断)
    从零开始学C++之RTTI、dynamic_cast、typeid、类与类之间的关系uml
    前端篇: 前端演进史
    找一款防文件或文件夹误删除,移动,修改的软件
    yyyy
    盘点我用过的那些网盘(那些年,我们一起玩的网盘)
    Win8/8.1/10获得完整管理员权限的方法
    [置顶] IT老男人读《因为痛,所以叫青春》
    dddd
    用JUNCTION映射文件夹内容 解决多系统跑同一个虚拟机而共享文件夹路径不同的问题
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/7119613.html
Copyright © 2020-2023  润新知