SSM+BJUI实现添加和编辑共用一个页面
場景
SSM+BJUI在對記錄進行添加或者編輯時可以共用一個jsp頁面,然后再進行保存。
實現
1.主頁面添加兩個按鈕,一個是添加按鈕一個是編輯按鈕。
<!-- 添加按鈕--><shiro:hasPermission name="partnerAdd"><a href="${ctx}/sys/cooperativePartnersManageAction/toAdd" class="btn btn-green" data-icon="plus" data-toggle="dialog" data-width="800" data-height="400" data-id="dialog-user" data-mask="true">添加</a></shiro:hasPermission><!-- 編輯按鈕--><shiro:hasPermission name="partnerEdit">< BR>?????<ahref="${ctx}/sys/cooperativePartnersManageAction/toEdit?id={#bjui-selected}" class="btn btn-blue" data-icon="edit" data-toggle="dialog" data-width="800" data-height="400" data-id="dialog-user" data-mask="true">編輯</a></shiro:hasPermission>三個頁面:
partnerMain就是當前主頁面,帶有添加以及編輯的頁面。
partnerEditDlg是添加和編輯共用的頁面。
添加功能實現
1.現在點擊添加按鈕,來到對應的action
@RequestMapping(value="/toAdd")public ModelAndView toAdd(){ModelAndView mv = null;try {//業務部分代碼省略//傳遞當前的操作類型的標識,左邊是op常量參數,表示操作類型,右邊是add常量參數,表示是添加操作mv.addObject(ModelAndViewConstants.OPERATION_KEY,ModelAndViewConstants.OPERATION_VALUE_ADD);//傳遞到共用頁面的標題參數,左邊是title常量參數,右邊是要顯示的標題的內容mv.addObject(ModelAndViewConstants.TITLE_KEY, "添加合作商戶信息");//跳轉的具體的頁面mv.setViewName(ModelAndViewConstants.PARTNER_EDIT_VIEW);LogService.getInstance(this).error("進入合作伙伴添加功能成功:" +ModelAndViewConstants.PARTNER_EDIT_VIEW);}catch(Exception ex) {LogService.getInstance(this).error("進入合作伙伴添加失敗:" + ex.getMessage(), ex);mv = new ModelAndView("redirect:/error.jsp");}return mv;}2.通過上面的action可以傳遞要執行的操作類型為add,并跳轉到共用的頁面。
?
主要功能點;
在共享頁面添加隱藏input,來接受傳過來的op參數,即操作類型,這里是add
因為是添加所以傳過來的實體類partner沒有ID等屬性,但是要在編輯要用到,所以這里也添加一個hidden。
這里只顯示一個字段,其他的省略。
3.點擊保存時,BJUI會提交當前form,此form會提交到:${ctx}/sys/cooperativePartnersManageAction/doSave,然后執行保存的操作。
@ResponseBody@RequestMapping(value="/doSave")public Map<String, Object> doSave(SysPartners entity, String op) {Map<String, Object> jsonResult = null;try {//正式業務部分開始//與配置權限管理中相對應,實現添加或編輯完實時更新String tabid = tabid(ModelAndViewConstants.PARTNER_SYS_ID);//如果是測試簽約if(entity.getContractStatus()==0) {entity.setTestContractTime(new Date());entity.setContractStatusName("測試簽約");}//如果是正式簽約if(entity.getContractStatus()==1) {entity.setFormalContractTime(new Date());entity.setContractStatusName("正式簽約");}entity.setRecordTime(new Date());//獲得當前用戶的id和name,加入客戶對象中ShiroUser currentUser = (ShiroUser)SecurityUtils.getSubject().getPrincipal();entity.setModifyUserId(currentUser.getUserId());entity.setModifyUserName(currentUser.getAccount());//正式業務部分結束//如果op標志參數為空,或者為add 那么就執行添加操作if (null == op || ModelAndViewConstants.OPERATION_VALUE_ADD.equals(op)) {//此字段表示數據未被更改entity.setStatus("0");//執行插入數據操作,方法是有代碼生成工具自動生成int count = this.sysPartnersService.insert(entity);if (count > 0) {LogService.getInstance(this).debug("添加客戶信息成功!");}}else {//如果不是,則就是編輯后的保存操作//獲取現存數據,也是通過代碼生成工具生成的方法SysPartners currentSysPartner = this.sysPartnersService.getByPrimaryKey(entity);int count = this.sysPartnersService.updateByPrimaryKey(entity);if (count > 0) {LogService.getInstance(this).debug("編輯合作商戶信息成功!");}}Integer statusCode = 200;String msg = "合作商戶信息保存成功";jsonResult = JsonResult.jsonReturn(statusCode, msg, tabid);}catch(Exception ex) {LogService.getInstance(this).error("保存合作商戶信息失敗:" + ex.getMessage(), ex);String msg =? "保存合作商戶信息失敗:" + ex.getMessage();jsonResult = JsonResult.jsonReturnErr(msg);}return jsonResult;}編輯功能實現
1.現在點擊主頁面的編輯按鈕
<!-- 編輯按鈕--><shiro:hasPermission name="customerEdit"><a href="${ctx}/sys/sysCustomerAction/toEdit?id={#bjui-selected}" class="btn btn-blue" data-icon="edit" data-toggle="dialog" data-width="800" data-height="400" data-id="dialog-user" data-mask="true">編輯</a></shiro:hasPermission>2.點擊編輯按鈕會跳到后臺action,并將當前BJUI集成的能獲取選中項的ID傳過去。
現在來到后臺的toEdit
@RequestMapping(value="/toEdit")public ModelAndView toEdit(Integer id) {ModelAndView mv = null;try {//根據ID先查詢要編輯的數據SysPartners partner = this.sysPartnersService.getByPrimaryKey(id);//業務部分代碼開始//獲取簽約狀態,此處是通過關聯碼表來實現Map<String, Object> param = new HashMap<String, Object>();//0 表示正常數據param.put("status", "0");param.put("codeType", "contractStatus");//根據參數將相關碼表內容查詢出來List<SysCode> contractStatus = codeService.getByParam(param);mv = new ModelAndView();//傳遞簽約狀態mv.addObject("contractStatus", contractStatus);//業務部分代碼結束//傳遞操作類型,這里是編輯操作mv.addObject(ModelAndViewConstants.OPERATION_KEY,ModelAndViewConstants.OPERATION_VALUE_EDIT);//jsp頁面要顯示的標題titlemv.addObject(ModelAndViewConstants.TITLE_KEY, "修改合作商戶信息");//將查詢到的實體Model類傳遞mv.addObject(ModelAndViewConstants.PARTMER, partner);//跳轉到編輯界面mv.setViewName(ModelAndViewConstants.PARTNER_EDIT_VIEW);}catch(Exception ex) {LogService.getInstance(this).error("進入客戶編輯失敗:" + ex.getMessage(), ex);mv = new ModelAndView(ModelAndViewConstants.ERROR_VIEW);}return mv;}關鍵點:
通過傳過來的ID獲取要編輯的Model實體類的數據,然后執行相應的業務,
關鍵是通過:
mv.addObject(ModelAndViewConstants.OPERATION_KEY,ModelAndViewConstants.OPERATION_VALUE_EDIT);
來傳遞操作類型,左邊是常量參數op,右邊是常量參數edit。
然后傳遞要顯示的標題,傳遞獲取的model數據,跳轉到共用的編輯頁面。
3.剩余操作與添加功能一樣,不過是編輯時將數據傳遞過去,通過input的value來賦值,如果是添加時value為空所以不顯示,如果是編輯則會將傳遞的數據進行顯示,添加與編輯都是執行同一個save方法。
?
?
?
總結
以上是生活随笔為你收集整理的SSM+BJUI实现添加和编辑共用一个页面的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SSM实现根据后台控制禁用select
- 下一篇: Vux+Cordova打包的安卓App实