亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Struts2類型轉換(一)-類型轉換概述,錯誤消息顯示與定制

2019-11-14 20:57:05
字體:
來源:轉載
供稿:網友
Struts2類型轉換(一)-類型轉換概述,錯誤消息顯示與定制 Posted on 2014-08-20 14:41 KnightKitt 閱讀(...) 評論(...) 編輯 收藏一、類型轉換概述1、 從一個 HTML 表單到一個 Action 對象, 類型轉換是從字符串到非字符串?! ∫驗镠TTP 沒有 “類型” 的概念,每一項表單輸入只可能是一個字符串或一個字符串數組。因此, 在服務器端, 必須把 String 轉換為特定的數據類型。(詳細講述可參考《Struts2技術內幕-深入解析Struts2架構設計與實現原理》的第6章-“OGNL,數據流轉的催化劑”中的6.1.1節-數據流轉的困境)2、 在 struts2 中, 把請求參數映射到 action 屬性的工作由 Parameters 攔截器負責, 它是默認的攔截器棧defaultStack中的一員。Parameters 攔截器可以自動完成字符串和基本數據類型之間轉換。二、類型轉換出錯時如何進行處理如果類型轉換失敗:–若 Action 類沒有實現 ValidationAware 接口: Struts 在遇到類型轉換錯誤時仍會繼續調用其 Action 方法, 就好像什么都沒發生一樣。–若 Action 類實現 ValidationAware 接口:Struts 在遇到類型轉換錯誤時將不會繼續調用其 Action 方法, Struts 將檢查相關 action 元素的聲明是否包含著一個 name=input 的 result。 如果有, Struts 將把控制權轉交給那個 result 元素;若沒有 input 結果, Struts 將拋出一個異常。(注:一般Action通過繼承ActionSupport類來間接的實現ValidationAware接口。)三、類型轉換錯誤消息的顯示與定制當Action實現了ValidationAware接口時,若類型轉換出錯,則Struts會查找配置文件中定義的“name=input”的result,而作為默認的 defaultStack 攔截器棧的一員, ConversionError 攔截器負責添加與類型轉換有關的出錯消息(前提: Action 類必須實現了 ValidationAware 接口)和保存各請求參數的原始值,以便在頁面上顯示錯誤提示消息和回顯表單(只有在Struts2的非simple主題下才會自動顯示錯誤消息)。示例一:1)jsp頁面主要代碼如下:
1 <s:debug></s:debug>2 3 <s:form action="testConversion">4     <s:textfield name="age" label="Age"></s:textfield>5     <br><br>6 <s:submit></s:submit>7 </s:form>

2)java主要代碼如下:

 1 package com.atguigu.struts2.app; 2  3 import com.opensymphony.xwork2.ActionSupport; 4  5 public class ConversionAction extends ActionSupport{ 6  7     PRivate int age; 8      9     public int getAge() {10         return age;11     }12 13     public void setAge(int age) {14         this.age = age;15     }16 17     public String execute(){18         System.out.println("age: " + age);19         return "success";20     }21     22 }

3)struts.xml基本配置如下:

<package name="default" namespace="/" extends="struts-default">    <action name="testConversion" class="com.atguigu.struts2.app.ConversionAction">        <result>/success.jsp</result>        <result name="input">/index.jsp</result>    </action>         </package>

將項目發布后運行,當我們輸入非整數字符提交后的運行結果如下圖:

可以看到,在Struts2的非simple主題下,非法輸入字段將導致一條有著以下格式的出錯消息:Invalid field value for field "fieldName".針對以上結果提出如下問題:問題1: 如何覆蓋默認的錯誤消息?

1). 在對應的 Action 類所在的包中新建ActionClassName.properties 屬性文件, ActionClassName 即為包含著輸入字段的 Action 類的類名2). 在屬性文件中添加如下鍵值對: invalid.fieldvalue.fieldName=custom error message。(注意:在這里只是寫出了字段名,并沒有寫Action的名稱,因為通過properties文件名已經可以定位到Action對象了。)

示例二:

為示例一添加屬性文件:ConversionAction.properties,并在文件中提交鍵值對:invalid.fieldvalue.age=/u9519/u8BEF/u7684/u5E74/u9F84/u683C/u5F0F.(即“錯誤的年齡格式.”)

運行結果如下圖:

問題2: 如果是 simple 主題, 還會自動顯示錯誤消息嗎? 如果不會顯示, 怎么辦 ?

修改主題為simple后,可以看到此時不能自動的顯示錯誤消息,因此,我們可以通過下述方法來顯示錯誤消息:

1). 通過 debug 標簽,可知若轉換出錯, 則在值棧的 Action(實現了 ValidationAware 接口) 對象中有一個 fieldErrors 屬性,該屬性的類型為 Map<String, List<String>>(通過Debug標簽中的fieldErrors屬性格式初步判斷其為數組類型或集合類型,之后可以在ActionSupport中的set/getFieldErrors方法中進一步驗證其類型),其中鍵: 字段(屬性名), 值: 錯誤消息組成的 List。 所以可以使用 EL 或 OGNL 的方式來顯示錯誤消息: ${fieldErrors.age[0]}2). 還可以使用 s:fielderror 標簽來顯示,可以通過 fieldName 屬性顯示指定字段的錯誤。

  示例三:  修改示例一中的JSP頁面代碼如下:
1 <s:form action="testConversion" theme="simple">2     Age: <s:textfield name="age" label="Age"></s:textfield>3     ${fieldErrors.age[0]}4     <s:fielderror fieldName="age"></s:fielderror>5     <br><br>6     <s:submit></s:submit>7 </s:form>

  運行結果如下圖:

    從運行結果可以看到,使用<s:fielderror>標簽來顯示錯誤提示信息時,其所產生的ul,li格式并不是我們想要的,那么如何修改以便定制出錯消息的樣式呢?

問題3: 若是 simple 主題,且使用 <s:fielderror fieldName="age"></s:fielderror>標簽來顯示錯誤消息,則該消息在一個 ul, li, span 中。 如何去除 ul, li, span 呢 ?

思路一:由于每一條出錯消息都被打包在一個 HTML span 元素里, 可以通過覆蓋其行標為 errorMessage 的那個 CSS 樣式來改變出錯消息的格式。但是這種方法不利于我們系統整體樣式的維護。

★★★思路二:在 Struts2的template.simple包下面的 fielderror.ftl 文件里定義了 simple 主題下 s:fielderror 標簽顯示錯誤消息的樣式,所以修改該配置文件即可。 ★★★修改模板的方法:在 src 下新建 template.simple 包, 新建 fielderror.ftl 文件,把原生的 fielderror.ftl 中的內容復制到新建的 fielderror.ftl 中,然后剔除 ul, li, span 部分即可。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲自拍偷拍视频| 欧美一级成年大片在线观看| 欧美性视频在线| 亚洲天堂视频在线观看| 欧美精品激情视频| 亚洲伊人一本大道中文字幕| 国产精品免费一区| 伊人久久综合97精品| 另类视频在线观看| 91精品视频在线看| xx视频.9999.com| 午夜精品一区二区三区在线| 91在线视频九色| 全球成人中文在线| 国产精品一区久久| 国产精品精品久久久久久| 日韩成人激情视频| 久久99国产综合精品女同| 亚洲免费电影一区| 国产精品露脸自拍| www.日本久久久久com.| 精品国产户外野外| 国产精品视频一| 欧美性受xxxx白人性爽| 欧美激情日韩图片| 日韩精品在线观看网站| 久久久久久久久久国产精品| 91久久精品视频| 97免费在线视频| 亚洲欧美制服另类日韩| 精品视频中文字幕| 亚洲自拍小视频免费观看| 国产一区二区免费| 欧美黑人又粗大| 日韩在线视频免费观看| 欧美日本高清一区| 精品久久久久久国产91| 九九九热精品免费视频观看网站| 久久国内精品一国内精品| 亚洲黄色www网站| 91夜夜未满十八勿入爽爽影院| 欧美美女15p| 日韩精品视频在线观看免费| 久久亚洲精品视频| 伊人av综合网| 国产精品久久久久福利| 欧美激情免费看| 日韩精品中文字幕在线| 视频在线观看99| 成人免费看吃奶视频网站| 中文字幕亚洲欧美日韩在线不卡| 日韩av手机在线看| 日本午夜精品理论片a级appf发布| 亚洲国产91色在线| 亚洲欧美色婷婷| 亚洲欧美国产一本综合首页| 国产精品免费一区豆花| 日韩亚洲欧美中文高清在线| 成年人精品视频| 97在线免费观看| 亚洲女人天堂视频| 欧美亚洲国产成人精品| 日本久久久久久| 欧美在线观看网站| 亚洲欧美另类在线观看| 福利视频导航一区| 91精品国产91久久久| 日韩最新中文字幕电影免费看| 91久热免费在线视频| 国产精品黄页免费高清在线观看| 欧美午夜性色大片在线观看| 欧美精品aaa| 亚洲аv电影天堂网| 国产精品第2页| 久久男人资源视频| 国内精久久久久久久久久人| 色悠久久久久综合先锋影音下载| 欧美区二区三区| 亚洲欧洲日本专区| 成人www视频在线观看| 国产国语刺激对白av不卡| 久久国产精品网站| 久久九九全国免费精品观看| 91精品国产高清自在线看超| 欧美孕妇孕交黑巨大网站| 久久久国产成人精品| 国产一区玩具在线观看| 国内成人精品一区| 久久亚洲精品毛片| 日韩中文在线观看| 性亚洲最疯狂xxxx高清| 欧美国产精品日韩| 亚洲成人久久一区| 亚洲精品ady| 日韩在线免费视频| 亚洲专区中文字幕| 日韩久久精品成人| 国产一区二区三区网站| 亚洲色图偷窥自拍| 久久久亚洲成人| 日日骚av一区| 欧美亚洲另类激情另类| 欧美高跟鞋交xxxxhd| 国产91九色视频| 日本精品在线视频| 久久视频在线播放| 中文字幕亚洲欧美一区二区三区| 国产91精品久久久久| 国产精品视频公开费视频| 日韩经典中文字幕| 亚洲激情在线视频| 91在线观看免费网站| 精品久久中文字幕久久av| 欧美极品少妇xxxxx| 欧美精品制服第一页| 日韩欧美中文字幕在线观看| 日韩av网站在线| 亚洲精品女av网站| 精品国产乱码久久久久久虫虫漫画| 国产原创欧美精品| 这里只有精品视频| 欧美成在线视频| 亚洲最新av网址| 成人黄色av播放免费| 欧美性高跟鞋xxxxhd| 久久99国产精品自在自在app| 国内成人精品视频| 日韩中文av在线| 色综合伊人色综合网| 91精品国产综合久久香蕉922| 亚洲四色影视在线观看| 黄色精品一区二区| 午夜精品国产精品大乳美女| 中文字幕在线看视频国产欧美在线看完整| 国产精品美女av| 91久久久国产精品| 成人免费xxxxx在线观看| 亚洲国产中文字幕在线观看| 欧美亚洲国产视频| 亚洲精品国产精品自产a区红杏吧| 亚洲人成77777在线观看网| 亚洲精品福利资源站| 国产精品三级在线| 国产成人精品午夜| 亚洲电影免费在线观看| 久久夜色撩人精品| 日本韩国在线不卡| 久久久久久com| 国产精品久久久久久av福利| 久久亚洲国产精品成人av秋霞| 亚洲欧美激情另类校园| 日韩免费观看视频| 国产99视频精品免视看7| 国产精品美女久久久久av超清| 日韩电影大全免费观看2023年上| 国产z一区二区三区| 欧美成人激情图片网| 日韩av大片免费看| 91久久综合亚洲鲁鲁五月天| 欧美日韩一区二区免费视频| 久久69精品久久久久久国产越南| 日韩av在线网页| 精品人伦一区二区三区蜜桃网站| 国产精品入口尤物|