SSM实现根据后台控制禁用select

场景

在对某条记录进行编辑时,如果是测试签约,则可以再进行编辑,更改为正式签约。

但是如果是正式签约,则不能再更改为测试签约。

效果

代码实现

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属性的显示使用选择表达式来实现。

猜你喜欢

转载自blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/84068380