角色的新增

1,打开新增页面时,需要使用xml文件中的内容来初始化复选框

2,保存时要将名称存入角色表,将选择的权限存入到角色权限中间表


DAO:

public void insert(Role role) throws DAOException {
	if(role==null){
		return;
	}
	
	String sql = "insert into role_info values(role_seq.nextval, ?)";
	Connection con = DBUtil.getConnection();
	
	try {
		con.setAutoCommit(false);
		
		String[] columnNames = new String[]{"id"};
		//插入角色表,插入时指定要返回的列名,插入后可以得到该列的值
		PreparedStatement ps = con.prepareStatement(sql, columnNames);
		ps.setObject(1, role.getName());
		ps.executeUpdate();
		
		//取到插入的id列
		ResultSet rs = ps.getGeneratedKeys();
		Integer roleId = null;
		if(rs.next()){
			roleId = rs.getInt(1);
		}
		
		//插入中间表
		List<Integer> pids = role.getPrivilegeIds();
		if(pids!=null && pids.size()>0){
			String sql2 = "insert into role_privilege values (?,?)";
			PreparedStatement ps2 = con.prepareStatement(sql2);
			for(Integer pid: pids){
				ps2.setObject(1, roleId);
				ps2.setObject(2, pid);
				ps2.addBatch();
			}
			ps2.executeBatch();
		}
		con.commit();
	} catch (SQLException e) {
		e.printStackTrace();
		try {
			con.rollback();
		} catch (SQLException e1) {
			e1.printStackTrace();
		}
		throw new DAOException("新增角色失败!", e);
	} finally{
		DBUtil.close();
	}
}

Action:

public class ToAddRoleAction {
	
	public String execute(){
		
		privileges = PrivilegeReader.getPrivileges();
		return "success";
	}
	
	//output,权限集合用于初始化复选框
	private List<Privilege> privileges;

	public List<Privilege> getPrivileges() {
		return privileges;
	}

	public void setPrivileges(List<Privilege> privileges) {
		this.privileges = privileges;
	}
	
}

public class AddRoleAction {
	
	public String execute(){
		IRoleDAO dao = DAOFactory.getRoleDAO();
		try {
			dao.insert(role);
		} catch (DAOException e) {
			e.printStackTrace();
			return "error";
		}
		
		return "success";
	}
	//input
	private Role role;

	public Role getRole() {
		return role;
	}

	public void setRole(Role role) {
		this.role = role;
	}
	
}

struts.xml

<!-- 转到新增角色页面Action -->
<action name="toAddRole" class="netctoss.action.role.ToAddRoleAction">
	<result name="success">
		/WEB-INF/role/addRole.jsp
	</result>
</action>
<!-- 新增角色Action -->
<action name="addRole" class="netctoss.action.role.AddRoleAction">
	<result name="success" type="redirectAction">
		findRole
	</result>
</action>

Jsp:

<form action="addRole" method="post" class="main_form">
	<div class="text_info clearfix"><span>角色名称:</span></div>
	<div class="input_info">
	    <s:textfield name="role.name" cssClass="width200" />
	    <span class="required">*</span>
	    <div class="validate_msg_medium">不能为空,且为20长度的字母、数字和汉字的组合</div>
	</div>                    
	<div class="text_info clearfix"><span>设置权限:</span></div>
	<div class="input_info_high">
	    <div class="input_info_scroll">
		<s:checkboxlist name="role.privilegeIds" list="privileges" listKey="id" listValue="name"/>
	    </div>
	    <span class="required">*</span>
	    <div class="validate_msg_tiny" id="privilegeMsg">至少选择一个权限</div>
	</div>
	<div class="button_info clearfix">
	    <input type="button" value="保存" class="btn_save" οnclick="save();" />
	    <input type="button" value="取消" class="btn_save" />
	</div>
    </form>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值