型別轉換
1. 什麼是型別轉換
剛才學習了封裝請求引數,把表單資料封裝到action(模型)的屬性中。表單中的資料都是string型別,但action(模型)的屬性不一定什麼型別。
將來我們還需要資料的回顯,即把action的屬性值顯示到表單中。把actoin的屬性顯示在表單中。
型別轉換是雙向的
string --> object,從表單到action
object --> string,從action到表單
預設情況下,struts會幫我們轉換如下型別:
1. date
2. 基本型別:int、float ....
3. string型別
4. 基本型別對應包裝型別:integer、double....
class myaction
********************=
自定義型別轉換
1. 目標
在表單給出如下資料:
張三,23,男
把這個字串轉換成person,封裝到action的乙個型別為person的屬性中。
2. 自定義型別轉換
當struts自動型別轉換失敗時,它會使用最原始的型別完成封裝,即使用string型別。
例如要把字串陣列轉換成person型別時,自動型別轉換會失敗,這時struts會去尋找setperson(string)方法。
如果找不到這個方法,會丟擲nosuchmethodexception異常,說明型別轉換失敗。
1). 編寫型別轉換器
2). 配置自定義的型別轉換器類。
3. 編寫型別轉換器
1). 實現com.opensymphony.xwork2.conversion.typeconverter(不方便)
2). 繼承com.opensymphony.xwork2.conversion.impl.defaulttypeconverter(不方便)
3). 繼承org.apache.struts2.util.strutstypeconverter(就用它)
sturtstypeconverter
* object convertfromstring(map context, string values, class toclass):string --> object,從表單到action
* string converttostring(map context, object o):object --> string, 從action到表單
4. 配置自定義型別轉換器
區域性部署:當前轉換器只對當前action的指定屬性有效
1) 配置檔案的位置:action同包下,即personaction同包下
2) 配置檔案的名稱:action名稱-conversion.properties,personaction-conversion.properties,
3) 配置檔案的內容:要處理的屬性名稱=型別轉換器的全名,即:person=cn.itcast.converter.personconverter
全域性部署:對某一型別指定型別轉換器,例如person型別都使用同一型別轉換器
1) 配置檔案的位置:src下
2) 配置檔案的名稱:xwork-conversion.properties
3) 配置檔案的內容:要處理的型別=型別轉換器名稱,即:cn.itcast.action.person=cn.itcastion.converter.personconverter
5. 型別轉換錯誤
說明:已經找到了型別轉換器,但型別轉換失敗。這時struts要求跳轉到input結果,但我們沒有為當前action配置input結果。
在input結果頁面中給出來顯示錯誤資訊。
但錯誤資訊是英文的,這需要使用國際化。
國際化key:invalid.fieldvalue.當前欄位名,即:invalid.fieldvalue.person
處理這一問題:
1. 在當前action同包下建立資源檔案,名稱為:action類名.properties
6. 原理
params:完成封裝請求資料,它會做型別轉換工作。
convertererror:如果出現型別轉換錯誤,會向當前action中新增fielderror。
workflow:檢視當前action中是否存在fielderror或actionerror,只要存在錯誤,攔截請求,**到input結果,不會在執行action的請求處理方法。當然,如果沒有錯誤,放行!
Struts2之型別轉換器的使用
一 學習案例 通過在輸入頁面 input.jsp 用同乙個輸入框同一時候輸入username和password,通過型別轉換器在輸出頁面 output.jsp 分別輸出username和password。二 a 型別轉換是發生在頁面資料提交之後,action 接收之前的。b 對於8 個原生資料型別以...
Struts2 的型別轉換
1 總體概述 將 string 型別轉化為自定義型別,是瀏覽器傳遞的引數轉換成相應的物件型別,從伺服器跳轉到瀏覽器頁面是自定義型別 物件型別 到 string 型別的轉換。2 流程 當瀏覽器提交到乙個 action 時候,會找到相應的 action 類,當呼叫 action 類裡面set 方法的時候...
struts2的型別轉換
由於使用者在客戶端輸入的資料都為字串型別,當將其儲存到伺服器端時無疑要進行型別轉換,這樣型別轉換自然應運而生了 與型別轉換相關聯的還有輸入校驗,只是輸入校驗習慣性建立在型別轉換基礎之上,輸入校驗將在後面介紹 可以說型別轉換和輸入校驗主要是對使用者輸入的資料進行基本的處理和驗證,以增強系統的安全和穩定...