开发过程当中,很多时候我们都需要使用到二级联动。二级联动,无非就是数据上的关联,我们首先就要找到数据与数据之间的关系,然后组成Map,或者List集合放到select中的value。
例如大项目与小项目:
1:组成数据组合,
Map<String, Map<String, String>> map = new HashMap<String, Map<String, String>>();
for (ProductType p : mapList.keySet()) {
Map<String, String> maptmp = new HashMap<String, String>();
List<ProductType> tmpBomTypes = mapList.get(p);
for (ProductType productBomType : tmpBomTypes) {
maptmp.put(productBomType.getId() + "",
productBomType.getTypeName());
}
map.put(p.getId() + "", maptmp);
}
JSONObject jsonObject = JSONObject.fromObject(map);
// 放置到上下文对象中
ValueContext.putValueContext("mapList", mapList);
ValueContext.putValueContext("jsonMap", jsonObject);
2:jsp页面的js和html,
<script type="text/javascript">
$(function(){
var map = ${jsonMap};
var value = $("select[parent]:eq(0)").val();
var list = map[value];
var child = $("select[child]:eq(0)");
for(var key in list){
child.append("<option value='"+key+"'>"+list[key]+"</option>");
}
$("select[parent]").change(function(){
var value = $(this).val();
var list = map[value];
var child = $("select[child]:eq(0)");
child.empty();
for(var key in list){
child.append("<option value='"+key+"'>"+list[key]+"</option>");
}
});
})
</script>
引用:
<tr>
<td>类型:</td>
<td><select name="parent" parent="true" >
<s:iterator value="#mapList.keySet" >
<option value="<s:property value="id"/>"><s:property value="typeName"/></option>
</s:iterator>
</select>
<select name="productType.id" child="true" > </select></td>
</tr>