在很多时候,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.exception.missing-action=There is no Action mapped for action name {0}.
xwork.exception.missing-package-action=There is no Action mapped for namespace {0} and action name {1}.
xwork.default.invalid.fieldvalue=Invalid field value for field "{0}".
可以清楚的看到最讨厌的那个Invalid field value for field "{0}就在最后一行。我们可以删掉这行。然后把源文件重新编译成jar就行了.这样的话,就不会显示类型转换失败了。要验证用户输入的类型对不对的话,可以用xml自带的东西
第二种方法:
这种方法可以不修改源文件.
我们知道struts2有个叫拦截器的东西.其实这些类型转换啊什么的都是用这个东西现实的。知道这点就好办了。我们去把那个默认的拦截器stack改了就行了。
查看struts-default.xml里面,看到了默认截拦器 他使用了conversion这个东西。
把这行去掉就行了。做个我们自已的拦截器stack,然后加入到struts.xml文件中
这里就是struts-default.xml文件
<interceptor-stack name="defaultStack">
<interceptor-ref name="exception"/>
<interceptor-ref name="alias"/>
<interceptor-ref name="servletConfig"/>
<interceptor-ref name="prepare"/>
<interceptor-ref name="i18n"/>
<interceptor-ref name="chain"/>
<interceptor-ref name="debugging"/>
<interceptor-ref name="profiling"/>
<interceptor-ref name="scopedModelDriven"/>
<interceptor-ref name="modelDriven"/>
<interceptor-ref name="fileUpload"/>
<interceptor-ref name="checkbox"/>
<interceptor-ref name="staticParams"/>
<interceptor-ref name="params">
<param name="excludeParams">dojo\..*</param>
</interceptor-ref>
<interceptor-ref name="conversionError"/> //去掉这行
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
<interceptor-ref name="workflow">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
</interceptor-stack>
当然我们说了不修改他的源文件。我们就采用覆盖的方法来重写他
在struts.xml中加入
<interceptors>
<interceptor-stack name="myinterceptor">
<interceptor-ref name="exception" />
<interceptor-ref name="alias" />
<interceptor-ref name="servletConfig" />
<interceptor-ref name="prepare" />
<interceptor-ref name="i18n" />
<interceptor-ref name="chain" />
<interceptor-ref name="debugging" />
<interceptor-ref name="profiling" />
<interceptor-ref name="scopedModelDriven" />
<interceptor-ref name="modelDriven" />
<interceptor-ref name="fileUpload" />
<interceptor-ref name="checkbox" />
<interceptor-ref name="staticParams" />
<interceptor-ref name="params">
<param name="excludeParams">dojo\..*</param>
</interceptor-ref>
<interceptor-ref name="validation">
<param name="excludeMethods">
input,back,cancel,browse
</param>
</interceptor-ref>
<interceptor-ref name="workflow">
<param name="excludeMethods">
input,back,cancel,browse
</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myinterceptor"></default-interceptor-ref> //这句就是让struts2采用我们的拦截器
我们自已写了个拦截器,叫myinterceptor
这个拦截器除了去掉了conversionError这个东西以外和默认的没有区别
我们就将这个自定义的东西改为默认的..这样你以后的所有action都会采用myinterceptor这个拦截了.只是少了那个转换错误的东西。
到此结束!写得太乱了。自已看的。如果有人看到,请见谅文字太乱~~
分享到:
相关推荐
struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换
对于基本数据类型 strus2可以自动的将其转换成所需要的类型,但是我们自己定义的引用数据类型无法转换,本文详细介绍了strus2的自定义类型转换器
传智播客struts2.1源代码_自定义类型转换器
这是一个struts2的类型转换器的案例,主要是写的如果将一个20110202这种类型的日期格式进行转换!
使用struts2提供的转化器,实现Date类型的数据转换
对于Struts1和Struts2中都讲到了自定义类型转换器。但是有些人可能对自定义类型转换器的运行原理不理解,这里进行简单介绍一下……
struts 2.0 自定义类型转换器 注册类型转换器 入门实例 简单实例
一个struts2的用户管理实例,涉及增删改查。 主要用到的技术: 1.struts2 2.国际化 3.类型转换 4.struts标签
NULL 博文链接:https://cdxs2.iteye.com/blog/1931878
NULL 博文链接:https://hanazawakana.iteye.com/blog/1681564
这是一个关于struts2的类型转换 以及 拦截器 还有校验的例子
配合博文:http://blog.csdn.net/u011638419/article/details/41276445
struts日期转换器。页面时间提交到action里自动转换格式,不转换会报错。呵呵,提供给各位大虾参考
这是一个讲解struts2框架转换器的ppt,在这个ppt中你可以学到strutsDefaultConversion转换器的前世今生,而已免积分哦!,附带有例子。
struts2(时间日期类型转换器) 简洁 易懂
自己用struts2写的一个简单的局部数据类型转换实例,适合初学者
struts2转换 json
struts2如何配置与自定义类型转换struts2如何配置与自定义类型转换
适合struts2入门使用,主要是struts拦截到的数据类型转换的问题