註冊型別轉換器

2021-09-05 05:36:39 字數 2585 閱讀 3222

僅僅為該應用提供型別轉換器還不夠,因為

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 ...