struts內建的轉換器會提示轉換失敗

2021-05-01 11:32:46 字數 2576 閱讀 7669

在很多時候,struts2裡面的型別轉換器的錯誤資訊實在是煩人。比如我們在xml驗證器裡將  

頁面age欄位(int 型)的xml驗證方法配置了,使用者輸入乙個abc時,這時候會出現兩條資訊,一就是這個內建轉換器的轉換失敗的錯誤資訊,一串英文,雖然可以國際化一下,但是這條資訊出來以後,age自已的xml驗證器也要提示錯誤.比如你age 規定 10 - 100 之間的數字,但是你輸入了abc,struts內建的轉換器會提示轉換失敗,同時將值給個 0 ,這時候xml的驗證又會失敗。成了兩個錯誤資訊。  

我發現有兩種方法可以消除他的這個自帶的轉換失敗資訊:其實內型轉換失敗完全可以用xml驗證器就夠了。他裡面也有驗證型別的。所以struts2裡面的那個就顯得多餘了.  

第一種方法是找到xwork的包,裡面的  

package  com.opensymphony.xwork2這個目錄下  

有個xwork-message.properties檔案,這個檔案裡面的內容如下  

xwork.error.action.execution=error during action invocation  

xwork.default .invalid.fieldvalue=invalid field value  for  field  "" .  

可以清楚的看到最討厭的那個invalid field value for  field "就在最後一行。我們可以刪掉這行。然後把原始檔重新編譯成jar就行了.這樣的話,就不會顯示型別轉換失敗了。要驗證使用者輸入的型別對不對的話,可以用xml自帶的東西  

第二種方法:  

這種方法可以不修改原始檔.  

我們知道struts2有個叫***的東西.其實這些型別轉換啊什麼的都是用這個東西現實的。知道這點就好辦了。我們去把那個預設的***stack改了就行了。  

檢視struts-default .xml裡面,看到了預設截攔器 他使用了conversion這個東西。  

把這行去掉就行了。做個我們自已的***stack,然後加入到struts.xml檔案中  

這裡就是struts-default .xml檔案  

"defaultstack" >  

"exception" />  

"alias" />  

"servletconfig" />  

"prepare" />  

"i18n" />  

"chain" />  

"debugging" />  

"profiling" />  

"scopedmodeldriven" />  

"modeldriven" />  

"fileupload" />  

"checkbox" />  

"staticparams" />  

"params" >  

"excludeparams" >dojo/..*

"conversionerror" />  //去掉這行

"validation" >  

"excludemethods" >input,back,cancel,browse

"workflow" >  

"excludemethods" >input,back,cancel,browse

當然我們說了不修改他的原始檔。我們就採用覆蓋的方法來重寫他  

在struts.xml中加入  

"myinterceptor" >  

"exception"  />  

"alias"  />  

"servletconfig"  />  

"prepare"  />  

"i18n"  />  

"chain"  />  

"debugging"  />  

"profiling"  />  

"scopedmodeldriven"  />  

"modeldriven"  />  

"fileupload"  />  

"checkbox"  />  

"staticparams"  />  

"params" >  

"excludeparams" >dojo/..*

"validation" >  

"excludemethods" >  

input,back,cancel,browse  

"workflow" >  

"excludemethods" >  

input,back,cancel,browse  

default -interceptor-ref>  //這句就是讓struts2採用我們的***

我們自已寫了個***,叫myinterceptor  

這個***除了去掉了conversionerror這個東西以外和預設的沒有區別  

我們就將這個自定義的東西改為預設的..這樣你以後的所有action都會採用myinterceptor這個攔截了.只是少了那個轉換錯誤的東西。

struts2 內建型別轉換器

如下型別可以相互轉化 boolean和boolean 完成字串和布林值之間的轉換 char和character 完成字串和字元之間的轉換 int和integer 完成字串和整形之間的轉換 long和long 完成字串和長整形之間的轉換 flota和float 完成字串和單精度浮點值之間的轉換 dou...

struts2自定型別轉換器

型別轉換 a.自定型別轉換器 1 建立實現類,繼承strutstypeconverter或defaulttypeconverter 2 重寫父類方法,實現字串和物件相互轉換 3 在src根目錄下新增配置xwork conversion.properties配置,內容格式 物件屬性型別 轉換器型別,均...

Struts2 0屬性轉換器的作用說明

struts2的型別轉換 一,區域性型別轉換 對某個action中的字段進行型別轉換 1,寫乙個針對該action的要轉換的字段的轉換器,繼承defaulttypeconverter,重寫convertvalue方法 2,在該action同乙個目錄下 同一包下 新建乙個 conversion.pro...