頁面效果 1.當新增用戶時,保存用戶信息,並刷新用戶管理首頁 2.當編輯已存在的用戶時,更新用戶信息,並刷新用戶管理首頁 實現步驟 1.Action類中定義save()及edit() 2.struts.xml中添加 用戶管理<action>下添加 3.service實現類中定義用戶保存方法 4.在w ...
頁面效果
1.當新增用戶時,保存用戶信息,並刷新用戶管理首頁
2.當編輯已存在的用戶時,更新用戶信息,並刷新用戶管理首頁
實現步驟
1.Action類中定義save()及edit()
/** * @Name: save * @Description: 新增用戶保存 * @Parameters: 無 * @Return: String:跳轉到close.jsp */ public String save(){ elecUserService.saveUser(elecUser); return "close"; } /** * @Name: edit * @Description: 跳轉到用戶編輯頁面 * @Parameters: 無 * @Return: String:跳轉到userEdit.jsp */ public String edit(){ //1.獲取用戶ID String userID = elecUser.getUserID(); //2.使用用戶ID,查詢ElecUser對象,支持表單回顯,這裡的user是放棧頂的對象,不同於elecUser ElecUser user=elecUserService.findUserByID(userID); //將VO對象的屬性值,放入PO對象的屬性值 user.setViewflag(elecUser.getViewflag()); //3.將ElecUser對象放入棧頂,頁面使用struts2標簽回顯 ValueUtils.pushValueStack(user); //4.載入數據字典,用來遍歷性別,職位,所屬單位,是否在職 this.initSystemDDL(); //5.二級聯動的表單回顯 //(1)從ElecUser對象獲取所屬單位的編號 String ddlCode = user.getJctID(); //(2)根據所屬單位和數據項編號,獲取數據項的值 String ddlName=elecSystemDDLService.findDdlNameByKeywordAndDdlCode("所屬單位",ddlCode); //(3)使用查詢的數據項的值,作為數據類型,查詢該數據類型的對應的集合,返回List<ElecSystemDDL> List<ElecSystemDDL> jctUnitList = elecSystemDDLService.findSystemDDLListByKeyword(ddlName); request.setAttribute("jctUnitList", jctUnitList); return "edit"; }
2.struts.xml中添加
<!-- 全局轉發 --> <global-results> <!--子頁面關閉,刷新父頁面--> <result name="close">/close.jsp</result> </global-results>
用戶管理<action>下添加
<result name="add">/WEB-INF/page/system/userAdd.jsp</result> <result name="edit">/WEB-INF/page/system/userEdit.jsp</result>
3.service實現類中定義用戶保存方法
/** * @Name: saveUser * @Description: 新增用戶保存 * @Parameters: ElecUser:VO對象 * @Return: 無 */ @Override @Transactional(isolation=Isolation.DEFAULT,propagation=Propagation.REQUIRED,readOnly=false) public void saveUser(ElecUser elecUser) { //獲取用戶ID String userID = elecUser.getUserID(); //判斷是新增還是編輯 if(StringUtils.isNotBlank(userID)){ //更新 elecUserDao.update(elecUser); }else{ //組織PO對象,保存用戶(1條數據) elecUserDao.save(elecUser); } }
這裡獲取用戶ID值得是獲取頁面傳遞的userID,在jsp頁面通過添加一個隱藏域實現,隱藏域中存放userID的值:
<s:hidden name="userID"></s:hidden>
4.在web.xml中添加
<!-- 添加spring解決hibernate懶載入的問題,過濾器 該過濾器一定要放置到struts2過濾器的前面 原理:延遲了Session的關閉時間,在頁面上關閉 --> <filter> <filter-name>OpenSessionInViewFilter</filter-name> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> </filter> <filter-mapping> <filter-name>OpenSessionInViewFilter</filter-name> <url-pattern>*.do</url-pattern> <url-pattern>*.jsp</url-pattern> </filter-mapping>
添加OpenSessionInViewFilter過濾器是因為在上面編輯方法edit()中,user對象壓入棧頂後,session關閉清空,再進行二級聯動表單回顯時,無法完成懶載入。
5.關閉子頁面,刷新用戶管理首頁面
<%@ page language="java" pageEncoding="UTF-8"%> <script language="javascript" src="${pageContext.request.contextPath }/script/function.js"></script> <html> <head> <title>操作成功</title> </head> <Script language="javascript"> function closeMethod(){ refreshOpener(); } </Script> <body onload="closeMethod()"> 操作成功! </body> </html>JSP頁面代碼
其中refreshOpener的js代碼如下:
function refreshOpener(){ //opener.location.href=sHref; opener.location.reload(); window.close(); }