📄 roleaction.java
字号:
package netctoss.rights.actions;
/*
* 负责角色的处理。
* */
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import global.TimeTools;
import global.ValidatorTool;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import netctoss.dao.AdminrolesDAO;
import netctoss.dao.RightsDAO;
import netctoss.dao.RolerightsDAO;
import netctoss.dao.RolesDAO;
import netctoss.entities.Adminroles;
import netctoss.entities.Rolerights;
import netctoss.entities.Roles;
import netctoss.rights.forms.RightForm;
import netctoss.rights.forms.RoleForm;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.actions.DispatchAction;
public class RoleAction extends DispatchAction {
private boolean validate(RoleForm form,ActionMessages errors)
{
if(ValidatorTool.validateNull("rolename", form.getRolename(), errors, "角色名必须输入")) return true;
if(ValidatorTool.validateIntArrayNull("rightid", form.getRightid(), errors, "至少选择一个权限")) return true;
return false;
}
public ActionForward insert(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
RoleForm fm=(RoleForm)form;
ActionMessages errors=new ActionMessages();
RightsDAO daoright= new RightsDAO();
RolesDAO daorole=new RolesDAO();
if(validate(fm,errors)){//验证没有通过
errors.add("role.insert", new ActionMessage("right.insert.failure",TimeTools.getNowTime("HH:mm:ss")));
this.saveErrors(request, errors);
return mapping.findForward("goaddnewrole");
}
//构造一个角色实体
try
{
Roles role=new Roles();
role.setId(0);
role.setName(fm.getRolename());
//循环得到所有权限对象
Set rolerights=new HashSet();
for(int i=0;i<fm.getRightid().length;i++){
Rolerights rr=new Rolerights();
//rr.setId(0);
rr.setRightid(daoright.findById(fm.getRightid()[i]));
rolerights.add(rr);
}
role.setRolerights(rolerights);
daorole.save(role);
daorole.getSession().flush();
daorole.getSession().clear();
form.reset(mapping, request);
errors.add("role.insert", new ActionMessage("right.insert.success",TimeTools.getNowTime("HH:mm:ss")));
}
catch(Exception err){
errors.add("role.insert", new ActionMessage("right.insert.failure",TimeTools.getNowTime("HH:mm:ss")));
}
this.saveErrors(request, errors);
return mapping.findForward("goaddnewrole");
}
public ActionForward update(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
//传递的数据进行包存
RoleForm fm=(RoleForm)form;
ActionMessages errors=new ActionMessages();
RightsDAO daoright= new RightsDAO();
RolesDAO daorole=new RolesDAO();
RolerightsDAO daorr=new RolerightsDAO();
List lstright=daoright.findAll();
request.setAttribute("lstright", lstright);
if(validate(fm,errors)){//验证没有通过
errors.add("role.insert", new ActionMessage("right.insert.failure",TimeTools.getNowTime("HH:mm:ss")));
this.saveErrors(request, errors);
return mapping.findForward("goroleupui");
}
//构造一个角色实体
try
{
Roles role=daorole.findById(fm.getRoleid());
role.setName(fm.getRolename());
//循环得到所有权限对象
/*这段逻辑的问题,应该是roleright存在的旧直接获取, 不存在的就添加*/
Set rolerights=new HashSet();
for(int i=0;i<fm.getRightid().length;i++){
//先到Rolerights查找对象是否存在,存在直接加入,不存在则产生新的。
List listrr=daorr.findByRoleRightID(role.getId(),fm.getRightid()[i]);
if(listrr.size()>0){
rolerights.addAll(listrr);
}
else{
Rolerights rr=new Rolerights();
rr.setId(0);
rr.setRightid(daoright.findById(fm.getRightid()[i]));
rolerights.add(rr);
}
}
role.setRolerights(rolerights);
daorole.save(role);
//把rolerights表中null数据删除
daorr.deleteByNullRoleID();
daorole.getSession().flush();
daorole.getSession().clear();
errors.add("role.insert", new ActionMessage("right.insert.success",TimeTools.getNowTime("HH:mm:ss")));
}
catch(Exception err){
//err.printStackTrace();
errors.add("role.insert", new ActionMessage("right.insert.failure",TimeTools.getNowTime("HH:mm:ss")));
}
this.saveErrors(request, errors);
return mapping.findForward("goroleupui");
}
public ActionForward delete(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
RoleForm fm=(RoleForm)form;
//得到要删除的ID,进行角色删除
try{
RolesDAO dao=new RolesDAO();
Roles role=dao.findById(fm.getRoleid());
dao.delete(role);
//dao.getSession().flush();
//dao.getSession().clear();
//这里是级联删除的设置Rolerights实体不需要删除。
//需要把adminroles的记录删除
AdminrolesDAO daoadminrole=new AdminrolesDAO();
daoadminrole.deleteByRoleID(fm.getRoleid());
dao.getSession().flush();
dao.getSession().clear();
}
catch(Exception e){
e.printStackTrace();
}
return mapping.findForward("godeleterole");
}
public ActionForward showUpdate(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
//根据传递过来的ID得到要修改的角色
RoleForm fm=(RoleForm)form;
RolesDAO dao=new RolesDAO();
//查询该角色的信息
Roles role=dao.findById(fm.getRoleid());
fm.setRoleid(role.getId());
fm.setRolename(role.getName());
int[] rr=new int[role.getRolerights().size()];
Iterator it=role.getRolerights().iterator();
int i=0;
while(it.hasNext()){
Rolerights rs=(Rolerights)it.next();
rr[i++]=rs.getRightid().getId();
}
fm.setRightid(rr);
//查询得到该角色信息的form
//得到所有权限备用
RightsDAO daoright=new RightsDAO();
List lstright=daoright.findAll();
request.setAttribute("lstright", lstright);
request.setAttribute("RoleForm", fm);
return mapping.findForward("goroleupui");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -