僅僅為該應用提供型別轉換器還不夠,因為
struts 2
依然不知道何時使用這些型別轉換器,所以我們必須將型別轉換器註冊在
web應用中,
struts 2
框架才可以正常使用該型別轉換器。
struts 2
支援如下三種註冊型別轉換器的方式。 ø
註冊區域性型別轉換器:區域性型別轉換器僅僅對某個
action
的屬性起作用。 ø
註冊全域性型別轉換器:全域性型別轉換器對所有
action
的特定型別的屬性都會生效。 ø
使用jdk 1.5
的注釋來註冊型別轉換器:通過注釋方式來註冊型別轉換器。 1
.區域性型別轉換器
與前面完全相似的是,註冊區域性型別轉換器使用區域性型別轉換檔案指定,只要在區域性型別轉換檔案中增加如下一行即可: =
將上面的
替換成需要進行型別轉換的屬性、
替換成型別轉換器的實現類即可。下面是本應用中區域性型別轉換檔案的內容。
程式清單: #
指定user
屬性需要使用
userconverter
類來完成型別轉換
至此,區域性型別轉換器註冊成功。當瀏覽者提交請求時,請求中的
user
請求引數將被該型別轉換器處理,即使用
convertvalue()
方法將字串轉換成
user
例項。
區域性型別轉換器只對指定
action
的特定屬性起作用,這具有很大的侷限性——我們花費了大量時間完成了乙個型別轉換器,卻只能一次使用(對乙個
action
有效),這太浪費了。通常我們會將型別轉換器註冊成全域性型別轉換器,讓該型別轉換器對該型別的所有屬性起作用。 2
.全域性型別轉換器
區域性型別轉換器的侷限性太明顯了,它只能對指定
action
、指定屬性起作用。但如果應用中有多個
action
都包含了
user
型別的屬性,或者乙個
action
中包含了多個
user
型別的屬性,使用全域性型別轉換器將更合適。
全域性型別轉換器不是對指定
action
的指定屬性起作用,而是對指定型別起作用,例如對所有型別為
型別的屬性起作用。
註冊全域性型別轉換器應該提供乙個
xwork-conversion.properties
檔案,該檔案也是
properties
檔案,該檔案就是全域性型別轉換檔案,該檔案直接放在
web應用的
web-inf/classes
路徑下即可。
全域性型別轉換檔案內容由多項「
=」項組成,將
替換成需要進行型別轉換的型別、將
替換成型別轉換器的實現類即可。
下面是本應用中註冊全域性型別轉換器的註冊檔案**。
程式清單:
codes\04\4.1\globalconverter\web-inf\src\xwork-conversion.properties #
指定型別需要 #
使用userconverter
類來完成型別轉換
一旦註冊了上面的全域性型別轉換器,該全域性型別轉換器就會對所有型別為
lee.user
型別的屬性起作用。關於使用全域性型別轉換器的示例,請參考
codes\04\4.1\
路徑下的
globalconverter
應用。
區域性型別轉換器只對指定
action
的指定屬性生效,全域性型別轉換器對指定型別的全部屬性起作用。 3
.關於區域性型別轉換器和全域性型別轉換器的說明
區域性型別轉換器是對指定
action
的指定屬性進行轉換,不管該
action
的該屬性是陣列也好,是
list
集合也好,該轉換器的轉換方法對該屬性只轉換一次;假如某個
action
有個list
型別的屬性
users
,那麼區域性型別轉換器將只呼叫一次
convertvalue()
方法,該方法把
users
請求引數一次性地轉換為乙個
list
集合物件。
全域性型別轉換器會對所有
action
的特定型別進行轉換,如果乙個
action
區域性型別轉換器對指定
action
的指定屬性起作用,乙個屬性只呼叫
convertvalue()
方法一次。全域性型別轉換器對所有
action
的特定型別起作用,因此可能對乙個屬性多次呼叫
convert value()
方法進行轉換——當該屬性是乙個陣列或集合時,該陣列或集合中包含幾個該型別的元素,那麼就會呼叫
convertvalue()
方法幾次。
註冊型別轉換器
僅僅為該應用提供型別轉換器還不夠,因為 struts 2 依然不知道何時使用這些型別轉換器,所以我們必須將型別轉換器註冊在 web應用中,struts 2 框架才可以正常使用該型別轉換器。struts 2 支援如下三種註冊型別轉換器的方式。註冊區域性型別轉換器 區域性型別轉換器僅僅對某個 actio...
SpringMVC 引數型別轉換器
假設在文字框中輸入日期,伺服器進行接收 jsp controller public modelandview conver date date 在springmvc中,預設能接收的date型別為 yyyy mm dd 若用此之外的方式傳送date引數給伺服器會報錯 那麼這時候可以手動建立乙個關於接收...
Spring的型別轉換器
spring有2種型別轉換器,一種是propertyeditor,一種是converter。第一種屬性編輯器用法見spring的屬性編輯器的章節。如果2種轉換器都適用,那麼究竟會適用哪種呢?spring預設是首先查詢propertyeditor,然後再查詢converter.用法示例 public ...