在项目中,省市下拉框联动采用的是Struts2的doubleselect标签,需要根据业务需求实现两个下拉框动态的缺省值(selected)。
业务场景:
在代理商管理中,增加代理商时候选择代理商所属的省市,然后增加代理商的销售人员,但代理商销售人员销售产品,如果客户在客户库中没有相关信息,需要增加客户,此时侯应当缺省根据代理商所属的省市信息,在增加客户时候,客户所在省市的缺省selected的值应当为代理商所在的省市信息。
主要实现逻辑如下:
采用doubleselect标签的value和doublevalue属性,在action中定义两个select框缺省值参数(例子中是defaultItem、doubleDefaultItem)的get、set方法,在action方法中根据业务逻辑(在增加客户时候,客户所在省市缺省为销售员所在省市)调用set方法设定两个select框的缺省值,然后在页面通过value和doublevalue方法获取设定的缺省值。
实现样例如下:
1. Action
package com.mobilesoft.esales.webapp.action;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import org.apache.log4j.Logger;
public class DoubleListAction extends BaseAction {
private static final Logger logger = Logger.getLogger(DoubleListAction.class);
private String defaultItem;
private String doubleDefaultItem;
public String execute() {
return SUCCESS;
}
public String doubleSelectTest(){
Map map=new HashMap();
ArrayList list1=new ArrayList();
list1.add(“11”);
list1.add(“12”);
list1.add(“13”);
map.put(“1”, list1);
ArrayList list2=new ArrayList();
list2.add(“21”);
list2.add(“22”);
list2.add(“23”);
map.put(“2”, list2);
ArrayList list3=new ArrayList();
list3.add(“31”);
list3.add(“32”);
list3.add(“33”);
map.put(“3”, list3);
setDefaultItem(“2”);
setDoubleDefaultItem(“23”);
getRequest().setAttribute(“defaultItem”, getDefaultItem());
getRequest().setAttribute(“doubleDefaultItem”, getDoubleDefaultItem());
getRequest().setAttribute(“map”, map);
return SUCCESS;
}
public String getDefaultItem() {
return defaultItem;
}
public void setDefaultItem(String defaultItem) {
this.defaultItem = defaultItem;
}
public String getDoubleDefaultItem() {
return doubleDefaultItem;
}
public void setDoubleDefaultItem(String doubleDefaultItem) {
this.doubleDefaultItem = doubleDefaultItem;
}
}
2. doubleselect.jsp
<%@ taglib prefix=”s” uri=”/struts-tags” %>
<%@ page language=”java” errorPage=”/error.jsp” pageEncoding=”GBK” contentType=”text/html;charset=GBK” %>
<html>
<head>
<title>Struts 2 Cool Tags – <s:doubeselect/ ></title>
<s:head />
</head>
<body>
<h2>Doubleselect 缺省值selected使用数据演示:</h2>
<s:form name=”form1″>
<s:doubleselect label=”缺省值测试”
list=”#request.map.keySet()” doubleList=”#request.map[top]”
name=”doubleselect1″ doubleName=”doubleselect2″
value=”#request.defaultItem” doubleValue=”#request.doubleDefaultItem”
formName=”form1″
/>
</s:form>
</body>
</html>
3. struts.xml
<action name=”doubleSelectTest” method=”doubleSelectTest” class=”com.mobilesoft.esales.webapp.action.DoubleListAction”>
<result name=”success”>test/doubleselect.jsp</result>
</action>
转载请注明:出家如初,成佛有余 » Struts2 doubleselect标签中select框缺省selected实现