场景
在对某条记录进行编辑时,如果是测试签约,则可以再进行编辑,更改为正式签约。
但是如果是正式签约,则不能再更改为测试签约。
效果
代码实现
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属性的显示使用选择表达式来实现。