第一:点击新建之后,顶级部门显示当前的上级部门而不是最顶级的NULL
parentId有值就可以回显所以代码如下:
1、新建按钮的链接需要更改:
<s:a action="department_addUI?parentId=%{parentId}"><img src="${pageContext.request.contextPath}/style/images/createNew.png" /></s:a>2.相应的Action 不需要修改,因为parentId 在点击相应的上级部门查看其下级部门时它的parentId就已经放到model的值栈里去了,所以可以直接用%{}OGNL表达式取得。
查看下级部门代码:
<td><s:a action="department_list?parentId=%{id}">${name}</s:a> </td>第二。增加返回上一级按钮
1.jsp
<s:a action="department_list?parentId=%{#parent.parent.id}"><img src="${pageContext.request.contextPath}/style/blue/images/button/ReturnToPrevLevel.png" /></s:a>2.相应的Action
public String list() throws Exception { //List<Department> departmentList=departmentservice.findall(); List<Department> departmentList=null; if(parentId==null)//顶级 departmentList=departmentservice.findTop(); else//子部门列表 { //-----------返回上一级 Department parent =departmentservice.findById(parentId); ActionContext.getContext().put("parent", parent); //-----------返回上一级 departmentList=departmentservice.findchildrens(parentId); } ActionContext.getContext().put("departmentList", departmentList); return "list"; }第三:在保存,修改,删除后要留在原层级目录不要返回最顶级。。。。以前是因为在struts.xml文件中的toList对应的result直接返回List了。所以修改如下:
加上:
?parentId=${parentId} 注意在struts.xml配置中OGNL表达式要用$
<action name="department_*" class="departmentAction" method="{1}"> <result name="list">/WEB-INF/jsp/departmentAction/list.jsp</result> <result name="saveUI">/WEB-INF/jsp/departmentAction/saveUI.jsp</result> <result name="toList" type="redirectAction">department_list?parentId=${parentId}</result> </action>当然在保存删除修改时都要向Action传入parentId这样才能为值栈中的Action 对象栈的parentId属性赋值。。。。修改于保存有表单提交过程,所以parentId自然会传给Action,要改的主要是删除,如下:
<td><s:a action="department_delete?id=%{id}&parentId=%{parent.id}" onClick="return window.confirm('这将删除所有的下级部门,您确定要删除吗?')">删除</s:a> <s:a action="department_editUI?id=%{id}">修改</s:a>