首頁 Java java教程 學習Jakarta Struts 1.1 (二)

學習Jakarta Struts 1.1 (二)

Dec 17, 2016 am 10:46 AM


  DynaActionForm
  
   DynaActionForm提供了一個方便的機制,從根本上消除了編寫ActionForm的需要。 DynaActionForm可答應動態的表單屬性。這意味著你能夠在你的struts-config.xml檔案中定義屬性並且將表單類型設定為org.apache.struts.action.DynaActionForm。什麼都不需要寫。 DynaActionForm使用Apache公共專案中的DynaBean完成這些動作。這動態的行為是透過反射(reflection)與哈希圖(Hashmaps)提供的。
  
    DynaActionForm是在struts-config.xml檔案中使用與標記定義的,如下所示:
  
       〜〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜〜 〜 〜〜 〜 〜、、〜、〜、、、〜都〜   
  動態表單的屬性與標準的ActionForm的屬性類似。屬性name是用於索引Action中的表單bean,且type用於指定實例化的類別。當使用類別DynaActionForm時,的動態屬性會自動預設為真(true)。對於DynaActionForm,若要用元素指定表單的所有屬性。元素中的name是指屬性名稱。 type是指bean屬性用java的實作類別的類別名稱。假如這個屬性是索引類型的,可在type後面加上「[ ]」。在上表中,你應該注重最後一個屬性genre的定義,我們設定了初始值(或叫 預設值)為「Dance」。這個值也會在DynaActionForm中reset()方法被呼叫時被當作預設值設置,並答應在表單中設定預設值的機制。假如在initial屬性中沒有指定任何值,那麼所有原始類型的初值被設定為0,假如是物件則初值為null(空)。
  
  使用DynaActionForm非常方便,主要的一個好處就是你只需寫出非常少的程式碼。就像其他表單一樣,前面的程式碼範例是使用表單所需的全部程式碼。需要知道的一件事就是驗證。當使用DynaActionForm時,假設在某處進行了驗證處理,這與ActionForm有些不同。你可以在自己的Action中實現驗證,但這是一個更好的方法。
  
  進行驗證,可用DynaValidatorForm或DynaValidatorActionForm,兩個類別都在org.apache.struts.validator package套件中。透過擴充DynaActionForm,可以得到基於XML檔案的基本值域的驗證。驗證是基於輸入驗證器的key。 Key是來自於struts-config.xml檔的name屬性。它應與validation.xml檔案中的表單元素的name屬性相符。
  
  多應用支援
  在Struts 1.1中可以定義和支援多重的子應用。這意味著你能將你的應用放在更易於維護的子應用中。你不再需要在唯一的struts-config.xml檔案之外偵測來源控制。
  
  另一個使用子應用的原因是根據客戶而改變的控制流。在某些應用程式中,你可能有一些通用的頁面,但是控制流也許會因為登陸應用程式的客戶的不同而有所改變。你能把這個控制流的元資料存入資料庫並產生web.xml檔(或該文件中的一部分),與不同的struts-config.xml檔一起。
  
  假如你曾對Struts 1.x進行過開發,你可能注重到了許多web.xml文件中的元素已經移到了Struts 1.1的struts-config.xml文件中。這是因為現在他們是應用特定(application-specific)的。多重的子應用透過在請求URI的相對於上下文部分開始的前綴來確定。如果沒有應用前綴能夠匹配,則選擇預設配置。預設設定擁有一個空字串的前綴。執行預設設定的這種方式對可能只定義一個應用的Struts 1.0.x是向後相容的。
  
  假如你擁有一個包含不同功能模組的大型應用,那麼用協同運作的子應用取代一個巨大的應用會更有意義。下面所示的文件web.xml顯示如何定義子應用程式。
  
  
    config
    /WEB-INF/struts-config.xml
  
  
  
  
    
    config/catalog
    /WEB-INF/struts-config-catalog.xml
  
  
  
  
    
    config/sorter 
    /WEB- INF/struts-config-sorter.xml
   
  
  
  當使用子應用時,你可能定義上下文相關的請求URI來指定使用哪一個子應用。例如,對表單的動作可能如下所示:
  
  
  引用了預設的子應用,或
  
  
 『catalog。實際上你不必這麼做。你可以在catalog子應用程式中用/listCds假如你想這麼做。基本規則是:所有在1.0版本中上下文相關的struts-config.xml參數現在在1.1版本中是子應用前綴相關的。這樣,在沒有修改的情況下一個單一的應用既可以作為預設子應用也可作為指定的子應用。 

 以上就是學習Jakarta Struts 1.1 (二)的內容,更多相關文章請關注PHP中文網(www.php.cn)! 


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

公司安全軟件導致應用無法運行?如何排查和解決? 公司安全軟件導致應用無法運行?如何排查和解決? Apr 19, 2025 pm 04:51 PM

公司安全軟件導致部分應用無法正常運行的排查與解決方法許多公司為了保障內部網絡安全,會部署安全軟件。 ...

如何使用MapStruct簡化系統對接中的字段映射問題? 如何使用MapStruct簡化系統對接中的字段映射問題? Apr 19, 2025 pm 06:21 PM

系統對接中的字段映射處理在進行系統對接時,常常會遇到一個棘手的問題:如何將A系統的接口字段有效地映�...

如何優雅地獲取實體類變量名構建數據庫查詢條件? 如何優雅地獲取實體類變量名構建數據庫查詢條件? Apr 19, 2025 pm 11:42 PM

在使用MyBatis-Plus或其他ORM框架進行數據庫操作時,經常需要根據實體類的屬性名構造查詢條件。如果每次都手動...

如何將姓名轉換為數字以實現排序並保持群組中的一致性? 如何將姓名轉換為數字以實現排序並保持群組中的一致性? Apr 19, 2025 pm 11:30 PM

將姓名轉換為數字以實現排序的解決方案在許多應用場景中,用戶可能需要在群組中進行排序,尤其是在一個用...

IntelliJ IDEA是如何在不輸出日誌的情況下識別Spring Boot項目的端口號的? IntelliJ IDEA是如何在不輸出日誌的情況下識別Spring Boot項目的端口號的? Apr 19, 2025 pm 11:45 PM

在使用IntelliJIDEAUltimate版本啟動Spring...

Java對像如何安全地轉換為數組? Java對像如何安全地轉換為數組? Apr 19, 2025 pm 11:33 PM

Java對象與數組的轉換:深入探討強制類型轉換的風險與正確方法很多Java初學者會遇到將一個對象轉換成數組的�...

電商平台SKU和SPU數據庫設計:如何兼顧用戶自定義屬性和無屬性商品? 電商平台SKU和SPU數據庫設計:如何兼顧用戶自定義屬性和無屬性商品? Apr 19, 2025 pm 11:27 PM

電商平台SKU和SPU表設計詳解本文將探討電商平台中SKU和SPU的數據庫設計問題,特別是如何處理用戶自定義銷售屬...

使用TKMyBatis進行數據庫查詢時,如何優雅地獲取實體類變量名構建查詢條件? 使用TKMyBatis進行數據庫查詢時,如何優雅地獲取實體類變量名構建查詢條件? Apr 19, 2025 pm 09:51 PM

在使用TKMyBatis進行數據庫查詢時,如何優雅地獲取實體類變量名以構建查詢條件,是一個常見的難題。本文將針...

See all articles