SSM實現根據後臺控制禁用select
阿新 • • 發佈:2018-11-21
場景
在對某條記錄進行編輯時,如果是測試簽約,則可以再進行編輯,更改為正式簽約。
但是如果是正式簽約,則不能再更改為測試簽約。
效果
程式碼實現
1.前端BJUI框架點選編輯按鈕時,將當前選中的ID傳到action
<!-- 編輯按鈕--> <shiro:hasPermission name="customerEdit"> <a href="${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>
2.來到後臺action,對應上面提交的地址:/sys/cooperativePartnersManageAction/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頁面要顯示的標題title mv.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; }
碼錶:
3.然後來到編輯介面
<td > <label for="name" class="control-label x90">當前簽約狀態:</label> <select data-toggle="selectpicker" name="contractStatus"> <c:forEach items= "${contractStatus}" var="cu"> <option ${partner.contractStatus == 1?"disabled='disabled'":"" } value="${cu.codeValue}" ${partner.contractStatus == cu.codeValue?"selected='selected'":""}>${cu.codeName}</option> </c:forEach> </select> </td>
注:
通過forEach迴圈標籤,將關聯碼錶查詢到的選項全部顯示。
name="contractStatus",屬性與傳過來的實體類的屬性相對應。
items= "${contractStatus}"用來接收從碼錶傳遞的引數,是通過上面action的:
//傳遞簽約狀態
mv.addObject("contractStatus", contractStatus);
來傳遞的。
distabled屬性以及selected屬性的顯示使用選擇表示式來實現。