JavaEE项目实战(OA系统)之十_部门管理之四

  JavaEE项目实战(OA系统)之十_部门管理之四

  四、action

  action部分是struts框架处理页面请求的核心。

  在struts2中,一个Action类可以是一个普通的类,并不需要继承自特殊的类。

  一个Action类中可以有多个方法,在每个方法前加注解@Action,并指定访问路径即可。


  在实际业务中,把action分成两种,一种有前缀词to,例如toDeptList,toDeptAdd,toDeptEdit,表示这个操作是要跳转到列表页、新增页、编辑页,在跳转前一般需要先取得数据,再跳转到指定页面;另一种没有前缀词to,例如deptAdd,deptUpdate,deptDel,表示这个操作是对数据的实际操作,将会执行数据的新增、修改、删除等,一般先执行数据操作,再跳转到指定页面。

  在Action类前,用@Result注解指定跳转页面。


  需要与页面交互的变量,都可以定义在Action类中,作为该类的一个属性,例如dept,deptList,deptId等,这些变量需要在页面和Action之间来回传递,所以都定义为Action类的属性,并提供get/set方法。


  代码如下:

// 结果页
@Results({ @Result(name = "list", location = "/manage/basic/deptList.jsp"),
		@Result(name = "add", location = "/manage/basic/deptAddEdit.jsp"),
		@Result(name = "edit", location = "/manage/basic/deptAddEdit.jsp"), })
public class DeptAction {
	@Resource
	private DeptBiz deptBiz; // 业务逻辑层对象
	private Dept dept; // 实体对象
	private List<Dept> deptList; // 列表对象
	private int deptId; // id
	private String oper; // 用于区分新增或修改
	private String msg; // 错误提示

	// 跳转到列表页
	@Action(value = "toDeptList")
	public String toList() {
		// 取得列表
		deptList = deptBiz.getAll();
		return "list";
	}

	// 跳转到新增页
	@Action(value = "toDeptAdd")
	public String toAdd() {
		// 初始化对象
		dept = new Dept();
		oper = "add";
		return "add";
	}

	// 跳转到修改页
	@Action(value = "toDeptEdit")
	public String toEdit() {
		// 取得对象
		dept = deptBiz.getById(deptId);
		oper = "edit";
		return "edit";
	}

	// 新增动作
	@Action(value = "deptAdd")
	public String add() {
		try {
			if (dept.getpId() == 0) {
				dept.setLevel(1);
			} else {
				Dept parent = deptBiz.getById(dept.getpId());
				dept.setLevel(parent.getLevel() + 1);
			}

			// 保存对象
			deptBiz.add(dept);
			// 重新取得列表
			deptList = deptBiz.getAll();
			// 跳转到列表页
			return "list";
		} catch (Exception e) {
			e.printStackTrace();
			// 错误提示
			msg = "部门新增失败!";
			// 跳转回新增页
			return "add";
		}
	}

	// 修改动作
	@Action(value = "deptUpdate")
	public String update() {
		try {
			if (dept.getpId() == 0) {
				dept.setLevel(1);
			} else {
				Dept parent = deptBiz.getById(dept.getpId());
				dept.setLevel(parent.getLevel() + 1);
			}

			// 保存对象
			deptBiz.update(dept);
			// 重新取得列表
			deptList = deptBiz.getAll();
			// 跳转到列表页
			return "list";
		} catch (Exception e) {
			e.printStackTrace();
			// 错误提示
			msg = "部门修改失败!";
			// 跳转回修改页
			return "edit";
		}
	}

	// 修改动作
	@Action(value = "deptDel")
	public String del() {
		try {
			// 删除对象
			deptBiz.del(deptId);
		} catch (Exception e) {
			e.printStackTrace();
		}
		// 重新取得列表
		deptList = deptBiz.getAll();
		// 跳转到列表页
		return "list";

	}

	// getter & setter
	// ......
}

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值