publicclassAddMaterialActionextendsAc" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Struts2講義31

系統 1834 0

7.1.2 ? List 集合類型數據類型轉換功能

技術要點

本節代碼具體介紹包含多個 Java 對象的 List 集合類型如何進行類型轉換。

List 集合類型類型轉換 Action 中使用方式。

List 集合類型類型轉換在視圖界面的使用方式。

演示代碼

使用的 Action 文件:

Java代碼 復制代碼
  1. <!----------------文件名:AddMaterialAction.java------------------> ??
  2. public ? class ?AddMaterialAction? extends ?ActionSupport?{ ??
  3. ????????? private ?List<Material>?materialList;?? ??
  4. ? ??
  5. ????????? public ?String?execute()? throws ?Exception?{ ??
  6. ??????????????????? return ?SUCCESS; ??
  7. ?????????} ??
  8. ??
  9. ????????? public ?List<Material>?getMaterialList()?{ ??
  10. ??????????????????? return ?materialList; ??
  11. ?????????} ??
  12. ? ??
  13. ????????? public ? void ?setMaterialList(List<Material>?materialList)?{ ??
  14. ??????????????????? this .materialList?=?materialList; ??
  15. ?????????} ??
  16. }??
    <!----------------文件名:AddMaterialAction.java------------------>
public class AddMaterialAction extends ActionSupport {
         private List<Material> materialList;  
 
         public String execute() throws Exception {
                   return SUCCESS;
         }

         public List<Material> getMaterialList() {
                   return materialList;
         }
 
         public void setMaterialList(List<Material> materialList) {
                   this.materialList = materialList;
         }
}
  

?

配置文件中的導航定義:

Java代碼 復制代碼
  1. <!-----------------文件名:struts.xml-----------------> ??
  2. <!--?Action所在包定義?--> ??
  3. ?????????< package ?name= "C07.1.2" ? extends = "struts-default" ?>?????????????? ??
  4. ???????????????????<action?name= "addMaterial" ??
  5. ???????????????????????????? class = "com.action.AddMaterialAction" > ??
  6. ????????????????????????????<result?name= "input" >/jsp/addMaterial.jsp</result> ??
  7. ????????????????????????????<result?name= "success" >/jsp/showMaterial.jsp</result> ??
  8. ???????????????????</action> ??
  9. ?????????</ package >??
    <!-----------------文件名:struts.xml----------------->
<!-- Action所在包定義 -->
         <package name="C07.1.2" extends="struts-default" >              
                   <action name="addMaterial"
                            class="com.action.AddMaterialAction">
                            <result name="input">/jsp/addMaterial.jsp</result>
                            <result name="success">/jsp/showMaterial.jsp</result>
                   </action>
         </package>
  

?

指定 List 類型中元素是具體何種對象屬性文件

Java代碼 復制代碼
  1. <!----------文件名:AddMaterialAction-conversion.properties---------------> ??
  2. #集合屬性-List類型 ??
  3. Element_materialList=com.model.Material??
    <!----------文件名:AddMaterialAction-conversion.properties--------------->
#集合屬性-List類型
Element_materialList=com.model.Material
  

?

類型轉換的數據輸入 JSP 文件:

Java代碼 復制代碼
  1. <!-------------------文件名:addMaterial.jsp--------------------> ??
  2. ………… ??
  3. ?????????<!--?材料輸入表單?--> ??
  4. ???????????????????<table> ??
  5. ????????????????????????????<s:form?id= "materialForm" ?action= "addMaterial" ?theme= "simple" > ??
  6. ????????????????????????????<table> ??
  7. ????????????????????????????<tr> ??
  8. ????????????????????????????<td>材料名</td> ??
  9. ????????????????????????????<td>價格</td> ??
  10. ????????????????????????????<td>庫存量</td> ??
  11. ????????????????????????????<td>過期日期</td> ??
  12. ????????????????????????????</tr> ??
  13. ????????????????????????????<s:iterator?value= "new?int[4]" ?status= "m" > ??
  14. ????????????????????????????<tr> ??
  15. ????????????????????????????<td><s:textfield?name= "%{'materialList['+#m.index+'].material'}" ?/></td> ??
  16. ????????????<td><s:textfield?name= "%{'materialList['+#m.index+'].bid'}" ?/></td> ??
  17. ????????????<td><s:textfield?name= "%{'materialList['+#m.index+'].mount'}" ?/></td> ??
  18. ????????????<td><s:datetimepicker?name= "%{'materialList['+#m.index+'].expireDate'}" ?/></td> ??
  19. ????????????????????????????</tr> ??
  20. ????????????????????????????</s:iterator> ??
  21. ????????????????????????????<tr> ??
  22. ????????????????????????????<td?colspan= "4" ><s:submit?value= "提交" ></s:submit> ??
  23. ????????????????????????????</tr> ??
  24. ????????????????????????????</table> ??
  25. ????????????????????????????</s:form> ??
  26. ???????????????????</table>??? ??
  27. …………??
    <!-------------------文件名:addMaterial.jsp-------------------->
…………
         <!-- 材料輸入表單 -->
                   <table>
                            <s:form id="materialForm" action="addMaterial" theme="simple">
                            <table>
                            <tr>
                            <td>材料名</td>
                            <td>價格</td>
                            <td>庫存量</td>
                            <td>過期日期</td>
                            </tr>
                            <s:iterator value="new int[4]" status="m">
                            <tr>
                            <td><s:textfield name="%{'materialList['+#m.index+'].material'}" /></td>
            <td><s:textfield name="%{'materialList['+#m.index+'].bid'}" /></td>
            <td><s:textfield name="%{'materialList['+#m.index+'].mount'}" /></td>
            <td><s:datetimepicker name="%{'materialList['+#m.index+'].expireDate'}" /></td>
                            </tr>
                            </s:iterator>
                            <tr>
                            <td colspan="4"><s:submit value="提交"></s:submit>
                            </tr>
                            </table>
                            </s:form>
                   </table>   
…………
  

?

類型轉換的顯示數據 JSP 文件:

Java代碼 復制代碼
  1. <!--------------------文件名:showMaterial.jsp----------------> ??
  2. ………… ??
  3. ????????????????<!--?材料數據顯示?--> ??
  4. ????????<table> ??
  5. ????????????<tr> ??
  6. ????????????<td>材料名</td> ??
  7. ????????????<td>價格</td> ??
  8. ????????????<td>庫存量</td> ??
  9. ????????????<td>過期日期</td> ??
  10. ????????????</tr> ??
  11. ????????????<s:iterator?value= "materialList" ?status= "m" > ??
  12. ????????????<tr> ??
  13. ????????????<td><s:property?value= "material" ?></s:property></td> ??
  14. ????????????<td><s:property?value= "bid" ?></s:property></td> ??
  15. ????????????<td><s:property?value= "mount" ?></s:property></td> ??
  16. ????????????<td><s:property?value= "expireDate" ?></s:property></td> ??
  17. ????????????</tr> ??
  18. ????????????</s:iterator> ??
  19. ?????????</table>??????????? ??
  20. …………??
    <!--------------------文件名:showMaterial.jsp---------------->
…………
                <!-- 材料數據顯示 -->
        <table>
            <tr>
            <td>材料名</td>
            <td>價格</td>
            <td>庫存量</td>
            <td>過期日期</td>
            </tr>
            <s:iterator value="materialList" status="m">
            <tr>
            <td><s:property value="material" ></s:property></td>
            <td><s:property value="bid" ></s:property></td>
            <td><s:property value="mount" ></s:property></td>
            <td><s:property value="expireDate" ></s:property></td>
            </tr>
            </s:iterator>
         </table>           
…………
  

?

數據輸入如圖 7.3

Struts2講義31

?

7.3 ? 多個 material 對象數據輸入(組合成 List 集合類型)

顯示數據如圖 7.4 。請注意各種 Java 類型數據在顯示頁面和輸入頁面的格式和顯示不同之處。

Struts2講義31

?

7.4 ? 多個 material 對象數據顯示

代碼解釋

1 )和上一小節示例相比。本示例雖然輸入的也是 Material 對象,不過卻是多個 Material 對象輸入。這里頁面上顯示的是一共 4 Material 對象輸入。將這些 Material 對象組裝成 List 集合類型,然后也可以讓 Struts2 自帶的類型轉換器進行類型轉換。

首先筆者在 Action 代碼中定義了 List 類型變量。并且運用 Java5 中的泛型來表明該 List 集合類型變量中的元素都是 Material 對象。當然,也可以在 Action 代碼中不使用泛型來標明是何種對象作為 List 集合類型的元素。另一種方法就是示例中寫明的在屬性文件中指定 List 集合類型的元素是何種對象。

注意:該屬性文件屬于局部類型轉換屬性定義文件。文件名要以 ActionName 打頭,然后以“ --conversion.properties ”結尾。這表示是對該 Action 中的 List 集合類型指定元素類型。而且該屬性文件一定要和 Action 放在同一目錄下。否則運行系統時候 Struts2 是不會知道該 Action List 集合類型變量元素是何種類型對象。

2 )試設想有一種情況,多個 Action 都需要將某一變量的類型進行轉換。此時可以像之前所述使用屬性文件來定義被轉換類型的變量。但是 1 Action 定義 1 個屬性文件則太浪費時間。因此 Struts2 中還有個全局類型轉換屬性定義文件,這樣所有需要類型轉換的 Action 都可以調用該文件中定義的需要類型轉換的變量。全局屬性文件名字必須為“ xwork-conversiion.properties ”。文件中定義的內容其實和局部屬性文件中大同小異,只是這些被定義的變量可以在所有 Action 中進行類型轉換。全局屬性文件沒必要和具體 Action 代碼文件放在一起,只需要放在源代碼根目錄下即可。也就是說全局屬性文件直接放在“ src ”文件夾下即可。

3 )在頁面輸入的 JSP 中,千萬不能將 List 集合類型的變量名寫錯,否則 Action 是得不到具體在頁面上輸入的值。而且因為是 List 類型,所以可以利用 OGNL 來循環遍歷。這樣在頁面上可依次輸入數據。數據顯示的 JSP 頁面上沒有什么特別需要注意的,讀者可以看到只是利用 Struts2 的標簽來顯示這些數據。

4 )讀者可由圖 7.3 、圖 7.4 看出,批量的 Material 對象數據輸入其實和單個 Material 對象輸入本質上沒有多大區別。在視圖界面上只是利用 OGNL Struts2 標簽來保證數據可以輸入和顯示。在 Action 這一層和普通的 Struts2 Action 導航沒有多大區別。最重要的是全局和局部類型轉換屬性文件的定義。讓系統明白集合類型中包含的元素是何種對象。不過也請讀者不要誤解,以為 Set 集合類型轉換也是如此。接下來筆者將講解 Set 集合類型數據類型轉換的注意點。

Struts2講義31


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 热99久久| 精品国产精品国产偷麻豆 | 老子不卡 | 国产亚洲精品久久午夜 | 特级一级全黄毛片免费 | 亚洲欧美综合一区二区三区四区 | 中文字幕亚洲无线码在线一区 | 国产亚洲欧美在在线人成 | 妖精视频国产 | 欧美精品 日韩 | 九天玄帝诀免费完整观看 | 亚洲成人黄色 | 久久免费激情视频 | 国产一区二区不卡视频 | 一级做a爱片久久毛片 | 99这里只精品热在线获取 | 亚洲操| 国产福利视频奶水在线 | 久久久久久久免费视频 | 国产福利精品在线 | 人与禽交免费网站视频 | 性丰满妇女free性性性 | 国产精品久久久久蜜芽 | 日本一级毛片视频 | 亚洲精品成人一区二区aⅴ 亚洲精品成人一区二区www | 久久99热这里只有精品免费看 | 99久久久国产精品免费播放器 | 中文字幕精品在线观看 | 依人成人综合网 | 欧美成年黄网站色视频 | 九九久久99综合一区二区 | 久九精品 | 欧美在线视频免费 | 久久久久毛片免费观看 | 国产一区二区免费在线 | 狠狠色噜噜狠狠狠狠米奇777 | 高清一区高清二区视频 | 精品一区二区三区的国产在线观看 | 波多野结衣一区免费作品 | 国产一级淫片a视频免费观看 | 亚洲阿v天堂在线观看2017 |