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

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

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

    javaGrowing

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      92 隨筆 :: 33 文章 :: 49 評論 :: 0 Trackbacks
    ?在 Strust 中,我們可能經常要在 ActionForm 中使用其他 JavaBean 作為屬性類型,這里就存在著如何使用好這些屬性與 HTML Form 之間的數據交換,下面我們就這些問題做一講解。

    如在用戶注冊界面中,我們通常會將用戶的聯系方式形成一個單獨的新的 Class ,如 Contact ,包含以下屬性:電話 (tel) ,手機(cell) , Email(email) , QQ(qq) ,通信地址 (adress) 等等,這樣條理也比較清晰,以下是這個ActionForm 的部分代碼:

    public class RegisterForm extends ActionForm

    {

    private Integer id;

    private String logonName;

    private String realName;

    private Contact contact=new Contact();

    ………..

    }

    在這里我們需要將 Contact 實例化(在 reset 函數中需要重新實例化),這主要因為 Struts 的機制:如我們將 HTML 的Form 元素(如 email )值傳給 ActionForm , Struts 需要執行的操作是getContact().setEmail(String email) ,如果這時返回的 contact 對象為空的話,那么賦值如何進行,而且Struts 也不會知道如何去實例化 Contact ,有時這些 JavaBean 的類型有可能是接口,實例化更是未知,所以關于JavaBean 類型在 ActionForm 中的實例化,你需要自行完成,而且必須完成。至于在實際操作中判斷 JavaBean是否被進行過相關操作(不再是初始狀態),你需要自行判斷,其實也很簡單,如可在 Contact 類中編寫一個函數檢驗一下即可。

    ActionForm 創建完畢后,我們需要在 Jsp Form 中引用這些 JavaBean 類型的屬性值,那就很簡單啦,只需采用“ Form 的屬性名稱”+“ . ”+“ JavaBean 中的屬性名稱”結構構成的名稱付給相關元素即可。如:

    <html:text property="contact.email">

    通過這種方式我們就可以處理好 ActionForm 中的 JavaBean 類型的屬性值了。

    實際的情況可能更復雜些,我們有時可能要提交多行數據到后退,而且行內的數據是相關的,如我們需要提交多個用戶的聯系方式,這些行內的數據,如email ,電話,手機,這些數據都是和用戶編碼相關的,現在我們修改一下 Contact 類,添加一個用戶編碼 (userId)屬性,這時我們構建的 ActionForm 中可能需要一個列表數據( List )類型來處理這種情況。以下是這個 ActionForm的部分代碼:

    public class ModifyBatchContactForm extends ActionForm

    {

    private List contact =new AutoArrayList (Contact.class);

    …..

    }

    在以上代碼中,我們同樣處理了 List 類型數據的初始化。 Struts 在給 List 中的對象賦值時,當然需要先獲取 List數據,然后在獲取 List 中某一個對象(通過 Index),最后給對象賦值。在這里想我們可以更詳細點分析瀏覽器端傳過來數據,字段值形式如下:contact[0].email= linux_china@hotmail.com , Struts 獲取 ActionForm 中的 List數據后,通過 Index (此時為 0 )來獲取 List 中封裝的 JavaBean 對象,然而此時 List是空的(盡管初始化了,但是沒有數據),是無法取得封裝的對象的,因此我們要在 Struts 獲取 List中封裝的對象的時候給它創建一個,這樣就保證對象的獲取和賦值的成功進行,所有我們新建一個 AutoArrayList 類,繼承ArrayList ,只要重寫 get(int index) 方法即可,其實很簡單,代碼如下:

    public class AutoArrayList extends ArrayList {

    private Class itemClass;

    public AutoArrayList(Class itemClass) {

    this.itemClass = itemClass;

    }

    public Object get(int index) {

    try {

    while (index &gt;= size()) {

    add( itemClass.newInstance());

    }

    } catch (Exception e) {

    e.printStackTrace();

    }

    return super.get(index);

    }

    }

    這樣我們就完成可以多行數據提交的 ActionForm設計,這里還有點提醒,如果從瀏覽器端傳過來的行索引是跳躍是的,如缺少中間行,而你不想要這些數據的話,且首尾行 index相差很大的話,這種方式可能不太適合。這種多行提交形式比較適合對固定行的數據處理。如果行數不固定的話,你可以參考使用 MapForm 方式實現。

    下面我們就看看如何在 Jsp 中使用這個 ActionForm ,其實只需要執行一個循環即可:

    <logic:iterate id=" contact " name=" FormName " property=" contact " indexid="index">

    <html:text name=" contact " property="userId" indexed="true">

    <html:text name=" contact " property="email" indexed="true">

    </html:text>

    這里我們再講解一下,代碼中出現的“ contact ”(紅色)都是 ActionForm 中的 List數據類型變量名稱,請確保一致,請不要更改名稱,這也是方便提交到后臺的數據接收。“ FormName ”為在 struts-config中聲明的 ActionForm 名稱。 indexed="true" 可以確保生成的 html 元素的名稱唯一,不要缺少這個聲明。以上的Jsp 代碼,你也可以使用 JSTL 來完成,就看你習慣如何了。

    通過以上步驟,我們完成了多行數據的提交所有環節,這樣 Struts 就會完成其他所有的事情,我們的代碼邏輯和實現也簡單多了。

    總結:通過以上兩個例子,相以信對 ActionForm 中使用 JavaBean 和 List 類型數據不會再陌生,同時使用 Map類型,這樣可創建更好的 ActionForm 設計,關于 MapForm ,請參考http://www.jetmaven.net/documents/j_mapformInStruts.php 。不過引入這種方式后,在Validator 方面你可能要花點腦筋啦(如通過 XDoclet 生成 Validator文件可能功能不全),可能你需要手寫一些代碼來完成相關工作</html:text></logic:iterate></html:text>
    posted on 2006-12-14 09:28 javaGrowing 閱讀(625) 評論(0)  編輯  收藏 所屬分類: struts學習

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲美女视频一区二区三区| 亚洲AV永久无码精品一百度影院 | 亚洲资源在线观看| 韩日电影在线播放免费版| 国产精品亚洲w码日韩中文| 国产精品黄页免费高清在线观看| 亚洲国产精品人人做人人爱| 一个人看的免费视频www在线高清动漫 | 亚洲精品乱码久久久久久蜜桃不卡| 国产男女爽爽爽免费视频| 在线观看亚洲成人| a级大片免费观看| 亚洲韩国在线一卡二卡| 妻子5免费完整高清电视| 亚洲欧洲免费无码| 亚洲A丁香五香天堂网| 四虎影视无码永久免费| 亚洲色偷偷偷网站色偷一区| 国产在线a免费观看| 精品国产亚洲AV麻豆| 国产福利电影一区二区三区,亚洲国模精品一区 | 毛片免费观看视频| 无遮挡a级毛片免费看| 自拍偷自拍亚洲精品被多人伦好爽 | 无码高潮少妇毛多水多水免费| 亚洲6080yy久久无码产自国产| 亚洲日韩VA无码中文字幕| 久久国产精品免费视频| 亚洲AV成人噜噜无码网站| 亚洲成?v人片天堂网无码| 两性色午夜视频免费网| 国产精品亚洲片夜色在线| 亚洲精品无码AV中文字幕电影网站| a级成人毛片免费图片| 亚洲中文字幕无码中文字| 国产亚洲AV夜间福利香蕉149| 亚洲精品视频免费看| 特级毛片在线大全免费播放| 亚洲欧洲第一a在线观看| 国产精品极品美女免费观看| 日本免费污片中国特一级|