struts2 xml 驗證出現 Invalid field value for field 的解決方法(轉)


缺省情況下, 所有的裝換錯誤使用通用的i18n信息 xwork.default.invalid.fieldvalue , 你可以在你的全局il8n資源包中替換他(缺省文本是"Invalid field value for field xxx", 這里xxx是字段名稱).

 

局部修改:

 

無論如何, 有時你會希望能夠在每個字段上替換這一信息. 你可以在action相關的資源文件(Action.properties)中添加一個i18n信息: invalid.fieldvalue.xxx, 這里xxx是字段名稱.

 

需要知道的是, 這些錯誤不會直接報告出來. 他們被添加到ActionContext.conversionErrors中. 有幾種方法可以訪問該map從而可以報告這些錯誤.

 

 

示例:

 

<form action="add" method="post">
   <s:fielderror></s:fielderror>
   <input type="text" name="box">
   <input type="text" name="width">
   <s:submit value="添加"></s:submit>
</form>
如果age輸入為不為數字時會提示
? Invalid field value for field "width".
其中Invalid field value for field "width" 信息是struts2通過內置的類型轉換器進行類型轉換時,如果不能成功轉換, struts2框架自動生成一條錯誤信息,並將該錯誤信息放到addFieldError里面,這種默認的輸出信息格式是在  xwork-2.1.2.jar中定義com/opensymphony/xwork2/xwork-messages.properties文件中有一條xwork.default.invalid.fieldvalue=Invalid field value for field "{0}".這是一種全局的錯誤提示方式,整個系統中只要是字段類型轉換錯誤都會這樣提示,我們也可以改變這種輸出格式,只要在全局的國際資源文件中重寫xwork.default.invalid.fieldvalue就可以了.實現方式:struts.xml中加入<constant name="struts.custom.i18n.resources" value="messageResource"></constant>或者也可以在struts.properties中加入struts.custom.i18n.resources=messageResource
指定國際化資源文件名為messageResource. Properties

新建messageResource. Properties資源文件並添加數據xwork.default.invalid.fieldvalue={0} failure
修改之后字段類型轉換錯誤提示為 : {0} failure所有的類型轉換失敗后,struts2會將基本類型設置為0,對象類型設置為null,這里的age的類型為Integer,當類型轉換失敗age值為null,如果age的類型為int,那么轉換失敗后值為0

這種提示信息不夠友好,也可以定義局布的提示信息,為每一個Action新建一個properties文件,文件名為XXX.properties(Action.properties)
實現方式:新建RegistAction.properties並添加
invalid.fieldvalue.width=width error


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com