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);
}
}
}
struts2 一个CRUD的BaseAction的更多相关文章
- Hello Mybatis 01 第一个CRUD
What's the Mybatis? MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google c ...
- Struts2的crud
struts2的crud引出的问题: 1.当Action里面有其他类的实例引用属性时,当要用请求参数为该对象的属性赋值时,如何将其压入栈顶. 2.当有的操作(list)不需要创建该属性的实例对象时,或 ...
- Struts2的CRUD操作
Struts之CRUD 1何为CRUD:CRUD代表的是一个框架的Create(增),Read(读取),update(更新),Delete(删除) 2怎么做呢?? 其实Struts2的CRUD与现实的 ...
- 瞧一瞧,看一看呐,用MVC+EF快速弄出一个CRUD,一行代码都不用写,真的一行代码都不用写!!!!
瞧一瞧,看一看呐用MVC+EF快速弄出一个CRUD,一行代码都不用写,真的一行代码都不用写!!!! 现在要写的呢就是,用MVC和EF弄出一个CRUD四个页面和一个列表页面的一个快速DEMO,当然是在不 ...
- 用MVC+EF快速弄出一个CRUD
瞧一瞧,看一看呐,用MVC+EF快速弄出一个CRUD,一行代码都不用写,真的一行代码都不用写!!!! 现在要写的呢就是,用MVC和EF弄出一个CRUD四个页面和一个列表页面的一个快速DEMO,当然是在 ...
- 使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序
使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序 不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻 ...
- struts2 一个简洁的struts.xml
struts.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUB ...
- 《Entity Framework 6 Recipes》中文翻译系列 (20) -----第四章 ASP.NET MVC中使用实体框架之在MVC中构建一个CRUD示例
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第四章 ASP.NET MVC中使用实体框架 ASP.NET是一个免费的Web框架 ...
- struts2一个和多个文件上传及下载
struts2的文件上传相比我们自己利用第三方jar包(commons-fileupload-1.2.1.jar commons-io-1.3.2.jar )要简单的多,当然struts2里面也是 ...
随机推荐
- Robot Framework(九) 执行测试用例——基本用法
3.1基本用法 Robot Framework测试用例从命令行执行,默认情况下,最终结果是XML格式的输出文件和HTML 报告和日志.执行后,可以组合输出文件,然后使用rebot工具进行后处理. 3. ...
- wpf mvvm模式下 在ViewModel关闭view
本文只是博主用来记录笔记,误喷 使用到到了MVVM中消息通知功能 第一步:在需要关闭窗体中注册消息 public UserView() { this.DataContext = new UserVie ...
- 子集和问题 - 回溯&搜索
题目地址:http://www.51cpc.com/web/problem.php?id=4264 其实一看到这道题我就想到了01背包,但是卡死在了如何顺序输出: 个人人为回溯本身就会用到搜索,像是充 ...
- Linux 安装 MySQL 详解(rpm 包)
说明:Linux 系统中软件的安装在 root 用户下进行,此安装方式为 rpm 包方式,安装的版本为:MySQL-5.6.25-1.linux_glibc2.5.x86_64.rpm-bundle. ...
- db2构建临时结果集
一 values ('1',2,3) 为一行 ‘1’ 2 3 行数据类型可以不同 values ('1',2,3),('f',5,6) 为两行 (values 1,2,3 ...
- python3 时间模块 random模块之两个小练习
话不多说,一个是算时间的,还有一个是生成验证码的 #!usr/bin/env/ python # -*- coding:utf-8 -*- # Author: XiaoFeng import time ...
- Codeforces 990D - Graph And Its Complement
传送门:http://codeforces.com/contest/990/problem/D 这是一个构造问题. 构造一张n阶简单无向图G,使得其连通分支个数为a,且其补图的连通分支个数为b. 对于 ...
- mongodb replica set 添加/删除节点方法--http://www.ii123.com/jc/bc/bczh/258948.html
replica set多服务器主从,添加,删除节点,肯定会经常遇到的.下面详细说明一下,添加,删除节点的2种方法. 一,利用rs.reconfig,来添加,删除节点 1,添加节点 代码如下 re ...
- [luoguP1069] 细胞分裂(数论)
传送门 分解质因数,不说了 这题坑了我2个多小时 教训 不熟悉位运算的优先级一定要加括号!!!! #include <cstdio> #include <iostream> # ...
- hdu 2604 矩阵快速幂模板题
/* 矩阵快速幂: 第n个人如果是m,有f(n-1)种合法结果 第n个人如果是f,对于第n-1和n-2个人有四种ff,fm,mf,mm其中合法的只有fm和mm 对于ffm第n-3个人只能是m那么有f( ...