struts2教程 四 struts2的型別轉換

2021-08-31 22:43:01 字數 1843 閱讀 5458

web應用型別的轉換分為兩種情況:

1.從客房端的字串到自定義型別的轉換。

2.頁面輸出時從自定義型別到字串的轉換。

在struts2中分兩種轉換,一種是區域性轉換,另一種是全域性型別轉換。具體轉換的實施需要乙個轉換類和乙個自定義類。我們先來看區域性型別轉換。

區域性型別轉換

對於int等基本型別,struts2會自動完成型別轉換,像age年齡,在輸入頁面是string型的,到action後會自動轉換成int型。而如果是轉換成物件型別的話,就需要自定義型別轉換。這樣就需要乙個自定義類。要定義乙個轉換類,需要繼承ognl.defaulttypeconverter這個類 ,這是個型別轉換的類。**如下:

1 public class pointconverter extends defaulttypeconverter

8 if(string.class==totype)

12 return null;

13 }

14 }

方法對數說明:1、map context ——應用上正文

2、object value ——是要進行型別轉換的值。如果是從客戶端到自定義的類,那麼value是個字串。注意:它是乙個字串的陣列。因為:在表單中可以有多個文字域,而所有文字域可以是同乙個名字,這時是考慮通用性而作為陣列處理的。如果只有乙個文字域,則陣列只有乙個元素,下標為0。注:jsp的servlet中接收多個相同名字的輸入域用request.getparametervalues()方法。

3、class totype ——來指定向哪 一種型別轉換,即是向類轉換還是向客戶端轉換。

4、point是乙個類,即是我們的自定義類。不是系統內建的型別

1 if(類.class == totype)

7 if(string.class == totype)

if(類.class == totype)

if(string.class == totype)

自定義類、轉換類、action都建立好之後,要通告struts2轉換類在什麼地方,並且告訴struts2是對誰進行轉換。寫乙個檔案:action檔名-conversion.properties,此屬性檔案要與action在同一包下,此檔案說明對此action中的屬性進行轉化。

檔案中的內容如下:

point = 轉換類名

內容說明:

1、point是action中的乙個屬性,轉換類指明所使用哪個轉換類對此屬性進行轉換

2、properties檔案中的注釋為「#」號,前面加「#」的行是被注釋的

型別轉換的流程

1、使用者進行請求,根據請求名在struts.xml中尋找action

2、在action中,根據請求域中的名字去尋找對應的set方法。找到後在賦值之前會檢查這個屬性有沒有自定義的型別轉換。沒有的話,按照預設進行轉換;如果某個屬性已經定義好了型別轉換,則會去檢查在action同一目錄下的 action檔名-conversion.properties 檔案。

3、從檔案中找到要轉換的屬性及其轉換類。

4、然後進入轉換類中,在此類中判斷轉換的方向。我們是先從使用者請求開始的,所以這時先進入從字串到類的轉換。返回轉換後的物件。流程返回action。

5、將返回的物件賦值給action中的屬性,執行action中的execute()

6、執行完execute()方法,根據struts.xml的配置轉向頁面

7、在jsp中顯示內容時,根據頁面中的屬性名去呼叫相應的get方法,以便輸出

8、在呼叫get方法之前,會檢查有沒有此屬性的自定義型別轉換。如果有,再次跳轉到轉換類當中。

9、在轉換類中再次判斷轉換方向,進入由類到字串的轉換,完成轉換後返回字串。

10、將返回的值直接帶出到要展示的頁面當中去展示。

struts2學習筆記(四)

資料型別轉換 正如同書上說的一樣。基本上來說,型別轉換都是一件讓人感到頭痛,但是不得不做的事情。而不得不說struts2給了我們乙個很好的解決方案。其實在struts2中。有乙個vaulestack的概念。其實我對於這個概念還是有點模糊。起初,我只是把valuestack當做類似於session一樣...

Struts2字尾 深入Struts2

一 將action字尾變成html字尾 xmlversion 1.0 encoding utf 8 doctype struts public apache software foundation dtd struts configuration 2.1 en struts include file...

Struts 2 注釋教程1

struts 2 注釋例子 我們將通過基於struts 2的hello user的例子學習注釋。在這個例子中,我們將獲得使用者的名字並給使用者展示乙個歡迎的資訊。這裡有兩個版本的例子,第乙個我們將了解到如何使用struts2提供的智慧型預設功能來實現,我們除了部署描述符 descriptor 以外,...