程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> Struts2 <s:doubleselect>級聯下拉框 詳解析

Struts2 <s:doubleselect>級聯下拉框 詳解析

編輯:關於JSP

運行環境:myeclipse8.6+jboss5.1+jvm1.6   先看最後目錄結構:     直接上源碼:   complexFormTag.jsp:   [html]   <%@ page language="java" contentType="text/html; charset=gb2312"pageEncoding="gb2312"%>   <%@ taglib prefix="s" uri="/struts-tags"%>   <html>       <head>           <title>復雜表單標簽使用范例</title>           <s:head />       </head>       <body>           <h3 align="left">doubleselect標簽使用范例</h3>           <p>               <s:form name="doubleselectExample">                   <s:doubleselect label="材料" headerValue="" headerKey="0"                       list="itemList" listKey="itemId" listValue="item"                       doubleName="materialId" doubleList="materialMap.get(top.itemId)"                       doubleListKey="materialId" doubleListValue="material" />               </s:form>           </p>       </body>   </html>   解析:   若不使用Struts2,則需要結合JavaScript和HTML標簽共同開發完成此功能。   doubleselect標簽的功能是提供兩個有級聯關系的下拉框。用戶選中第一個下拉框中的某選項,則第二個下拉框中的選項根據第一個下拉框被選中的某選項內容來決定它自己的下拉框選項內容,產生聯動效果。   下面是doubleselect標簽的屬性列表:   名稱   必  需      默認   類型   描述   list   是   無   Cellection Map   Enumeration Iterator array   要迭代的集合,使用集合中的元素來設置各個選項,如果list的屬性為Map則Map的key成為選項的value,Map的value會成為選項的內容   listKey       否       無       String       指定集合對象中的哪個屬性作為選項的value,該選項只對第一個列表框起作用   listValue       否       無       String       指定集合對象中的哪個屬性作為選項的內容,該選項只對第一個列表框起作用   headerKey       否       無       String       設置當用戶選擇了header選項時,提交的的value,如果使用該屬性,不能為該屬性設置空值   headerValue   否   無   String   顯示在頁面中header選項內容   emptyOption   否   false   Boolean       multiple   否   false   Boolean   是否多選   size   否   無   Integer   顯示的選項個數,該選項只對第一個列表框起作用   doubleId   否   無   String   指定第二個列表框的ID   doubleList       是       無       Cellection Map   Enumeration Iterator array   要迭代的集合       doubleListKey       否       無       String       指定集合對象中的哪個屬性作為選項的value,該選項只對第二個列表框起作用   doubleListValue       否       無       String       指定集合對象中的哪個屬性作為選項的內容,該選項只對第二個列表框起作用   doubleSize   否   無   Integer   選項個數   doubleName   否   無   String   指定第二個列表框的name映射   doubleValue   否   無   Object   第二個列表框的初始選種項   對於代碼"materialMap.get(top.itemId)",其中的top返回的是材料類別map集合的value即材料list集合中的材料類對象實例。   注意:<s:doubleselect/>標簽必須放在<s:form>中,放在普通<form>中會出錯,而且s:form必須指定name屬性。   另外,希望頁面美觀的話,希望s:doubleselect標簽和左邊的字對齊,則指定s:doubleselect屬性theme="simple"    希望兩個select排成一行(默認是上下行的),則在<s:form></s:form>間加入css樣式:   <style>      .nobr br{display:none}    </style>   然後在用<div class="nobr"></div>把<s:doubleselect .. />包起來就可以了!    下面通過一張圖形象的表示聯動關系:     對應的組件:                                                                                       最後,兩個下拉框要聯動起來,靠的是“ItemId”與下面"Integer類型變量"的一一對應關系。     complexFormTagAction.java:   [java]   package action;   import java.util.ArrayList;   import java.util.HashMap;   import java.util.List;   import java.util.Map;   import com.opensymphony.xwork2.ActionSupport;   import model.*;      public class ComplexFormTagAction extends ActionSupport {       //級聯第一個下拉框數據       private List<Item> itemList;       //級聯第二個下拉框數據       private Map<Integer, List<Material>> materialMap;          public String execute() throws Exception {           itemList = new ArrayList<Item>();              //循環新建10個類別           for (int j = 0; j < 10; j++) {               Item item = new Item();               item.setItemId(j + 1);               item.setItem("類別" + (j + 1));               itemList.add(item);           }                      materialMap = new HashMap<Integer, List<Material>>();           //循環新建每個類別中的10個材料           for (int j = 0; j < 10; j++) {               List<Material> materialList = new ArrayList<Material>();               for (int i = 0; i < 10; i++) {                   Material material = new Material();                   material.setMaterialId(i);                   material.setMaterial("類別" + (j + 1)+"-->"+"材料"+(i + 1));                   materialList.add(material);               }               materialMap.put((j + 1), materialList);           }           return SUCCESS;       }          public Map<Integer, List<Material>> getMaterialMap() {           return materialMap;       }          public void setMaterialMap(Map<Integer, List<Material>> materialMap) {           this.materialMap = materialMap;       }          public List<Item> getItemList() {           return itemList;       }          public void setItemList(List<Item> itemList) {           this.itemList = itemList;       }   }   Material.java:   [java]   package model;      public class Material implements java.io.Serializable {       // Fields       private int materialId;       private String material;          public Material() {}          public int getMaterialId() {           return this.materialId;       }          public void setMaterialId(int materialId) {           this.materialId = materialId;       }          public String getMaterial() {           return this.material;       }          public void setMaterial(String material) {           this.material = material;       }   }   Item.java:   [java]   package model;      public class Item implements java.io.Serializable {       private int itemId;        private String item;              public Item() {}          public int getItemId() {           return itemId;       }          public void setItemId(int itemId) {           this.itemId = itemId;       }          public String getItem() {           return this.item;       }          public void setItem(String item) {           this.item = item;       }   }   struts.xml:   [html]  <?xml version="1.0" encoding="gb2312"?>      <!DOCTYPE struts PUBLIC       "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">      <struts>      <constant name="struts.i18n.encoding" value="gb2312"/>         <package name="OGNLTAG" extends="struts-default">              <action name="complexFormTag" class="action.ComplexFormTagAction">         <result name="success">/jsp/complexFormTag.jsp</result>       </action>              </package>   </struts>  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved