<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    kapok

    垃圾桶,嘿嘿,我藏的這么深你們還能找到啊,真牛!

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      455 隨筆 :: 0 文章 :: 76 評論 :: 0 Trackbacks

    http://www.jetmaven.net/documents/j_mapformInStruts.php

    我們知道Struts的ActionForm一直被大家視為缺陷,覺得多余,但我個人認為ActionForm還是有它存在的理由。我們建立ActionForm通常和Web頁面的Form元素綁定,用于數(shù)據(jù)的收集和校驗等。ActionForm的屬性必須聲明,然后才能用于和Web頁面中,我們經(jīng)常遇到一些屬性不需要全部聲明,如查詢條件等,而且ActionForm的屬性太多時管理也是個問題,再另一些情況下,如采購單,使用master/detail方式,ActionForm的創(chuàng)建變的困難,好多屬性均不確定,如采購明細為對條記錄,這樣處理比較麻煩,在這篇文章中,我們將向你講述如何使用Struts的MapForm機制實現(xiàn)這樣的功能。
    我們希望ActionForm能夠接收Map數(shù)據(jù),這樣我們的管理就變的容易多啦,在Struts 1.1以后版本這樣的處理變得非常簡單,我們在ActionForm中聲明一個Map變量。


    public class MapForm extends ActionForm
    {
    private Map map = null;
    public void setMap(Map map) {
    this.map = map;
    }
    public Map getMap() {
    return this.map;
    }
    同時增加一個屬性方法去設(shè)置和獲取Map中的數(shù)據(jù)。
    public void setAttribute(String attributeKey, Object attributeValue)
    {
    getMap().put(attributeKey, attributeValue);
    }
    public Object getAttribute(String attributeKey)
    {
    Object keyValue = getMap().get(attributeKey);
    return keyValue;
    }
    這樣我們在jsp頁面中,我們就可以使用Struts的標(biāo)簽接觸這些Map數(shù)據(jù)。
    <html:text property="attribute(key)"/>
    這樣這些數(shù)據(jù)就可維護啦,這對查詢條件較多的情況非常適用,你無需在維護這些查詢信息在各個頁面的過渡,Struts幫您完成了一切。

    下面我們就看一下如何用MapForm組織master/detail方式的數(shù)據(jù),我們將以一個訂單做為樣例。

    1 首先建立一個Form對象,繼承MapForm,同時聲明主要的屬性,如訂單編碼、定購人等。
    public class OrderForm extends MapForm
    {
    private Integer id;
    private String orderMan;

    2 我們擬定以Map方式保存采購項信息,同一采購項采用統(tǒng)一前綴,可選擇行編碼,如row123_ productCode,row123_ productId,row123_ amount等,這樣某一采購項信息將被輸入到Map中,不同的采購項的前綴不一樣,前綴由row+行編碼組成,同時編寫可獲取行編碼的函數(shù),這樣可取得某一采購項的所有信息,參數(shù)rowPrefix為某一字符串,如“row”、“item”等,不包含數(shù)字編碼信息,同時你可以編寫Comparator,進行排序。
    public Collection getRowIdList(String rowPrefix)
    {
    if (map.isEmpty()) return new ArrayList();
    Collection allRowId = new TreeSet(new RowIdComparator(rowPrefix));
    Iterator allKey = map.keySet().iterator();
    while (allKey.hasNext())
    {
    String key = (String) allKey.next();
    if (key.indexOf(rowPrefix) != -1)
    {
    key = key.substring(0, key.indexOf('_'));
    allRowId.add(key);
    }
    }
    return allRowId;
    }

    3 在jsp頁面中你可以通過jstl,就可以完成采購明細的顯示。
    <c:forEach var="rowId" items="${OrderForm.getRowIdList('row')}">
    <tr align="center" id="${rowId}" onclick="clickRow()">
    <td ><html:text property="attribute(${rowId}_productCode)" size="8" onkeydown="fillProductInfoWithKeyDown('${rowId}',this)" /><html:hidden property="attribute(${rowId}_productId)"/> &nbsp;<a href="javascript:selectproduct('${rowId}')">選擇</a></td>
    <td ><html:text property="attribute(${rowId}_productQty)" size="8" /> </td>
    <td ><html:text property="attribute(${rowId}_productPrice)" size="8" /></td>
    <td ><html:text property="attribute(${rowId}_productName)" readonly="true" size="16" /></td>
    <td ><html:text property="attribute(${rowId}_productPackaging)" readonly="true" size="12"/></td>
    <td ><html:text property="attribute(${rowId}_productUnit)" size="6" readonly="true" /></td>
    </tr>
    </c:forEach>

    4 這樣Struts幫你完成了所有的信息處理,你需要完成你的保存就可以啦。

    提示:Map中的數(shù)據(jù)值默認都是String類型的,如果你想轉(zhuǎn)換成你想要的類型,可以在你的Form編寫一個工具方法,完成類型的轉(zhuǎn)換。
    public Map getTypedMap() {
    Map map = this.getMap();
    String keyString = (String) map.get("key");
    Integer keyInteger = new Integer(keyString);
    map.put("key",keyInteger);
    return map;
    }

    總結(jié):MapForm各個功能很少被開發(fā)人員使用,如果使用得當(dāng),功能非常強大。ActionForm個人認為并非是個設(shè)計缺陷,結(jié)合BeanUtils等工具包,轉(zhuǎn)換和信息處理非常方便。

    posted on 2005-04-30 13:55 笨笨 閱讀(344) 評論(0)  編輯  收藏 所屬分類: J2EEALLStruts
    主站蜘蛛池模板: 国产成人亚洲精品91专区高清 | 九九精品成人免费国产片| 香港a毛片免费观看| 毛片a级毛片免费观看免下载| 亚洲婷婷国产精品电影人久久 | 日韩亚洲欧洲在线com91tv| 亚洲人成77777在线播放网站不卡| 黄色a级免费网站| 91香蕉国产线在线观看免费| 国产无遮挡裸体免费视频| 亚洲AV无码精品色午夜在线观看| 亚洲一卡一卡二新区无人区| 国产综合免费精品久久久| 成人毛片免费视频| 亚洲成色在线综合网站| 亚洲精品无码av片| 9277手机在线视频观看免费| 亚洲精品国产综合久久一线| 亚洲一级毛片免费在线观看| 亚洲免费一区二区| 四虎免费大片aⅴ入口| 亚洲av一综合av一区| 在线亚洲精品视频| 18禁止看的免费污网站| 亚洲国产成人VA在线观看| 亚洲在成人网在线看| 中文字幕免费在线视频| 成人av免费电影| 久久亚洲精精品中文字幕| 污污视频网站免费观看| 曰批视频免费30分钟成人| 亚洲精品国精品久久99热一| 色偷偷亚洲男人天堂| 曰曰鲁夜夜免费播放视频| 亚洲av中文无码乱人伦在线播放| 免费国产va视频永久在线观看| 无遮免费网站在线入口| 亚洲狠狠久久综合一区77777| 免费一级毛片在线播放视频免费观看永久| 台湾一级毛片永久免费 | 麻豆亚洲AV成人无码久久精品|