需求: 在查询页查询出数据后,点击修改,将对应的值在修改界面展示,对应某些属性为select ,需要在修改界面默认对某个值进行选中。
方案:
1、跳转新增的action处理:
定义一个list,在新增界面使用
private List isMainList= new ArrayList();
public List getIsMainList() {
return isMainList;
}
public void setIsMainList(List isMainList) {
this.isMainList = isMainList;
}
跳转新增的方法中进行:
this.setIsMainList(BaseData.getSysBaseTypeList(IS_MAIN_KEY)); // 此处获取到的list为一个bean的list bean中有属性code_value cname
2、新增界面展示:
<td>
<s:select
name="rmBean.is_main" id="rmBean.is_main" list="isMainList"
listKey="code_value" listValue="cname" headerKey="0"
headerValue="--请选择--"
cssClass="vocation"></s:select>
</td>
3、修改时在action中增加修改对象:
utilsBean含有2个属性 key value
private UtilsBean modIsMain = new UtilsBean() ;
public UtilsBean getModIsMain() {
return modIsMain;
}
public void setModIsMain(UtilsBean modIsMain) {
this.modIsMain = modIsMain;
}
跳转到修改界面的方法中进行设置:
this.setIsMainList(BaseData.getSysBaseTypeList(IS_MAIN_KEY));
int isMain=0;
if(!"0".equals(modBean.getIs_main())) // modBean为要修改的bean
isMain =Integer.valueOf(modBean.getIs_main()).intValue();
modIsMain.setKey(isMain+"");
List tmpList = BaseData.getSysBaseTypeList(IS_MAIN_KEY);
for(int i=0 ; i<tmpList.size(); i++){
RmSysBaseTypeBean sbtBean = (RmSysBaseTypeBean)tmpList.get(i);
if(sbtBean.getCode_value() ==isMain){
modIsMain.setValue(sbtBean.getCname());
break;
}
}
对modIsMain对象进行赋值,在前台界面使用
3、前台修改界面:
<s:select
name="rmBean.is_main" id="rmBean.is_main" list="isMainList"
listKey="code_value" listValue="cname" headerKey="%{modIsMain.key}"
headerValue="%{modIsMain.value}"
cssClass="vocation"></s:select>
如果使用这段代码,修改数据中选中的属性会展示2次。
修改采用下面的代码,展示成功:
<s:select
name="rmBean.is_main" id="rmBean.is_main" list="isMainList"
listKey="code_value" listValue="cname" value="%{modIsMain.value}"
cssClass="vocation"></s:select>
</td>