jsp页面的combobox组件:
<label>所属单位:</label>
<input class="easyui-combobox" name="entityId" id="entityId" data-options="
<span style="white-space:pre"> </span>url:'${ctx}/action/${act}_roleList',
<span style="white-space:pre"> </span>method:'get',
valueField:'id',
textField:'name',
panelHeight:'auto',
">
编辑的JS
function editJS(){
var row = $('#dataList').datagrid('getSelected');//获取列表中选中的行对象
if (row){
$('#dlg').dialog('open').dialog('setTitle','编辑实验室');//弹出编辑对话框,下面赋值,对话框包括一个combobox,和若干input
$('#fm').form('load',row);
url = '${ctx}/action/${act}_update?editId='+row.id;//更改对话框的提交URL(之前做过添加功能)
//获取combobox的列表
var data = $('#entityId').combobox('getData');
for(var i=0;i<data.length;i++){
if(row.roleId == data[i].id){//匹配该row对象的主键ID与列表中哪个的ID相同
//设置默认值
$('#entityId').combobox('setValue',data[i].name);
break;
}
}
}
}
JAVA后台处理
public String update(){
result = new Result();
Lab lab = labService.findById(editId);
lab.setName(name);
lab.setDescription(description);
//对entityId这个参数进行判断,如果是数字,说明用户点击了combobox进行选择,如果是字符串,我们刚才的JS会在页面生成一个name为entityId的input,这时如果用户没有改变该项,它的值会是我们设置的默认值,即字符串;相当于默认设置的时候,显示的是input,选择的时候是select
if(CommonUtility.isNumeric(entityId)){
//该属性是数字,说明经过select进行选择了
SysRole role = roleService.findById(Integer.parseInt(entityId));
lab.setRole(role);
}else{
//该属性是字符串,说明没有经过选择,该属性没有改变
}
labService.update(lab);
result.setSuccess("修改成功!");
return sendJson(result);
}