日期:2014-05-17  浏览次数:20666 次

Struts2校验框架类型转换的问题!
最近用Struts2校验框架做表单校验的时候,有个字段xxx是long型的,要求判断不能为空、只能为大于一的正整数(正则表达式是这个^[1-9]\d*$)、去除两边空白字符。在输入字母的情况下,校验框架会提示“Invalid field value for field 'xx.xxx'”,在转换的时候就提示异常,我用资源文件配置了国际化,其他的都提示的是中文,这个地方不受控制,自己提示的是英文,控制台也抛出异常,这个地方怎么处理好啊?(不想用JS在页面做验证)

------解决方案--------------------
那是因为Invalid field value for field 'xx.xxx'是Struts2中集成的类型转化错误提示,而不是校验文件提示。
当你输入“abc”这样的字符串时Struts2中集成的类型转化器无法转化为Long型而报的错。解决方案一般有两种:
一是:重写Struts2中集成的类型转化器;
二是:重写Action中得public void validateXxx()方法,判断类型转化错误时清空fieldError,重新加入自己定义的提示信息。
如果你只是要改变Invalid field value for field 'xx.xxx'为中文的话,你在页面上输入“acs”类型字符串时,类型转化提示和校验文件提示会同时存在,显得很碍眼。并且后台依然会报错。