7.2 ? 類型轉換發生異常處理方案
類型轉換說明白點也就是調用某些 Struts2 已經定義的 Java 代碼。不過只要由 Java 這門語言書寫的程序都不可避免異常處理。因此萬一在類型轉換中發生異常,必須要快速解決它。本節就介紹筆者日常中對類型轉換的異常進行處理的一些辦法和方案。
7.2.1 ? Struts2 自帶異常提示
技術要點
Struts2 自帶對于類型轉換發生異常錯誤時候提示。
無任何操作時的錯誤提示。
輸入 fielderror 標簽時的錯誤提示。
演示代碼
使用 7.1.1 示例代碼沒有進行任何數據異常處理時候數據輸入如圖 7.7 。
圖 7.7 ? 各種基本類型數據輸入
輸入價格類型為字符串類型,而價格類型其實是 double 類型。此時錯誤提示如圖 7.8 。
圖 7.8 ? 價格類型輸入錯誤圖
引入 Struts2 標簽 fielderror 的數據輸入 JSP 代碼:
- <!------------------------文件名:addMaterial.jsp-------------------> ??
- ………… ??
- ?????????<s:fielderror/> ??
- …………??
<!------------------------文件名:addMaterial.jsp-------------------> ………… <s:fielderror/> …………?
引入標簽后類型轉換錯誤的提示如圖 7.9 。
圖 7.9 ? 引入標簽 fielderror 后價格類型輸入錯誤圖
代碼解釋
( 1 )本節代碼大致和 7.1.1 代碼類似。在沒有引入 fielderror 標簽之前。筆者只是簡單的把 7.1.1 代碼 copy 過來,沒有增加任何代碼。當在數據輸入頁面,輸入的價格數據為字符串類型數據。由于類型轉換時候,價格作為 Material 對象的一個屬性,它的 Java 代碼定義的類型是 double 類型,因此如果頁面上輸入的價格不是數字組成的,則轉換類型時候必定會發生類型轉換異常。此時 Struts2 自帶的處理類型轉換異常的機制就會如圖 7.8 顯示紅色的錯誤提示信息和出錯的數據輸入框提示。
( 2 ) Struts2 本身還有個提示表單中 field 輸入錯誤的提示標簽。該標簽名字為“ fielderror ”,具體寫法如代碼中所示。之所以在前面介紹 Struts2 標簽的章節中沒有記述該標簽,只是因為很多 Struts2 標簽有特定的使用意義和使用場合,因此在介紹 Struts2 其他部分時候會順便介紹這些有特殊使用場合的標簽。
如圖 7.9 , JSP 代碼中加了該標簽后,顯示的錯誤提示信息是在頁面頭部分。也就是說 fielderror 標簽在頁面上引入后,顯示的錯誤提示除了顯示位置不同之外,其他都是和不引入標簽時候 Struts2 自帶提示類型轉換錯誤提示是相同的。
注意:錯誤提示中的“ material.bid ”是 JSP 中定義的價格這個 field 的 name 。
7.2.2 ? Struts2 局部異常提示定義屬性文件使用介紹
技術要點
定義局部屬性文件,在該文件中定義類型轉換發生異常時的錯誤提示。
局部屬性文件定義。
演示代碼
局部屬性文件代碼:
- <!----------------------文件名:AddMaterialAction.properties---------------> ??
- #Action屬性類型轉換錯誤提示 ??
- invalid.fieldvalue.material.bid=材料價格非法輸入??
<!----------------------文件名:AddMaterialAction.properties---------------> #Action屬性類型轉換錯誤提示 invalid.fieldvalue.material.bid=材料價格非法輸入?
?
異常錯誤提示如圖 7.10 。
圖 7.10 ? 價格類型輸入錯誤圖
代碼解釋
( 1 )如同之前類型轉換屬性文件定義一樣,在和 Action 文件同目錄下定義了名為“ ActionName.properties ”的屬性文件,在該屬性文件中對類型轉換錯誤的屬性進行定義。其中“ material.bid ”就是輸入數據的 JSP 頁面中定義的 field 的 name 。而“ invalid.fieldvalue ”則是固定不變的格式。這樣設置后,系統就會在發生類型轉換錯誤時候在頁面上顯示屬性文件中定義的類型轉換錯誤提示信息。不會顯示之前使用 fielderror 標簽時候顯示的提示信息。
7.2.3 ? Struts2 全局異常提示定義屬性文件使用介紹
技術要點
定義全局屬性文件,在該文件中定義類型轉換發生異常時的錯誤提示。
全局屬性文件定義。
演示代碼
全局屬性文件代碼:
- <!-----------------文件名:messageResource.properties------------------> ??
- #類型轉換提示 ??
- xwork. default .invalid.fieldvalue={ 0 }類型轉換錯誤~~~??
<!-----------------文件名:messageResource.properties------------------> #類型轉換提示 xwork.default.invalid.fieldvalue={0}類型轉換錯誤~~~?
?
異常錯誤提示如圖 7.11 。
圖 7.11 ? 價格類型輸入錯誤圖
代碼解釋
( 1 )在源代碼根目錄下筆者定義了名為“ messageResource.properties ”的屬性文件,該文件是用來顯示國際化目的而使用的屬性文件。但關于類型轉換的錯誤定義也可以在該屬性文件中定義。這樣在所有 JSP 頁面中只要有有關于 Material 對象的 bid 屬性的輸入類型轉換都可以調用該屬性文件中對 bid 屬性類型轉換異常提示的信息。
注意:屬性文件中的“ {0} ”其實是占位符號,如果有多個屬性的類型轉換有異常發生,可依次以“ {0} ”,“ {1} ”這樣定義多個屬性。然后這些屬性名會自動一一對應于屬性文件中的定義。比如該示例中是“ material.bid ”則“ {0} ”中代表的就是它。所以在異常信息提示的頁面上顯示的是“ material.bid 類型轉換錯誤”。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
