原始 JSP 頁面 在 二級聯動顯示
1 Area 類:
2 public class Area{
3 private List emportias = new ArrayList(); /* 第二級 */
private String aname = null;
4 }
5
6
7 jsp 頁面:
8 <select name="city" id="city"onchange="bizAreas(this.options[this.selectedIndex].value)">
/* 數據存儲到 request 對象中,一級顯示,沒什么大問題 */
9 <c:forEach items="${list}" var="list">
10 <option value='${list.aname}'>
11 ${list.aname}
12 </option>
13 </c:forEach>
14 </select>
15
2 public class Area{
3 private List emportias = new ArrayList(); /* 第二級 */
private String aname = null;
4 }
5
6
7 jsp 頁面:
8 <select name="city" id="city"onchange="bizAreas(this.options[this.selectedIndex].value)">
/* 數據存儲到 request 對象中,一級顯示,沒什么大問題 */
9 <c:forEach items="${list}" var="list">
10 <option value='${list.aname}'>
11 ${list.aname}
12 </option>
13 </c:forEach>
14 </select>
15
1 function bizAreas(value)
2 {
3 var obj = document.getElementById("b1"); /*得到二級聯運的對象 */
4 /* 清空下拉列表框對象 */
5 while (obj.options.length>0)
6 {
7 obj.options.remove(0);
8 }
9
10 <%
/* 先循環第一級的集合,并提取形字 Area 類對象 */
11 List list = (List)request.getAttribute("list");
12 for(int i=0;i<list.size();i++){
13 Area a = (Area)list.get(i);
14 %> /* 判斷第一級選擇的值等于集合中的那個值,再循環這個對象下的二級集合 */
15 if(value == '<%=a.getAname()%>'){
16 <% /* 循環二級,并把它添加到 select 對象中 */
17 for(int j=0;j<a.getEmportias().size();j++){
18 Emportia em = (Emportia)a.getEmportias().get(j);
19 %>
20 bj.options.add(new Option('<%=em.getEname()%>','<%=em.getEname()%>'));
21 <%
22 }
23 %>
24 }
25 <%
26 }
27 %>
28 alert(value);
29
32 }
太原始了,頁面上都出現了JAVA代碼,
不過現在功力有限,如果有更好的 tag 或者 代碼,希望跟我聯系.
這種方案不好的地方是:要第一次將數據全部顯示在頁面上.加載會很慢.適合數據量小的頁面.如果數據量很大,
還是用Ajax 技術吧.
2 {
3 var obj = document.getElementById("b1"); /*得到二級聯運的對象 */
4 /* 清空下拉列表框對象 */
5 while (obj.options.length>0)
6 {
7 obj.options.remove(0);
8 }
9
10 <%
/* 先循環第一級的集合,并提取形字 Area 類對象 */
11 List list = (List)request.getAttribute("list");
12 for(int i=0;i<list.size();i++){
13 Area a = (Area)list.get(i);
14 %> /* 判斷第一級選擇的值等于集合中的那個值,再循環這個對象下的二級集合 */
15 if(value == '<%=a.getAname()%>'){
16 <% /* 循環二級,并把它添加到 select 對象中 */
17 for(int j=0;j<a.getEmportias().size();j++){
18 Emportia em = (Emportia)a.getEmportias().get(j);
19 %>
20 bj.options.add(new Option('<%=em.getEname()%>','<%=em.getEname()%>'));
21 <%
22 }
23 %>
24 }
25 <%
26 }
27 %>
28 alert(value);
29
32 }
太原始了,頁面上都出現了JAVA代碼,

這種方案不好的地方是:要第一次將數據全部顯示在頁面上.加載會很慢.適合數據量小的頁面.如果數據量很大,
還是用Ajax 技術吧.