1,打开新增页面时,需要使用xml文件中的内容来初始化复选框
Action:
struts.xml
Jsp:
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>