Struts2中关掉他内置的类型转换器出错信息

 

在很多时候,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这个拦截了.只是少了那个转换错误的东西。


到此结束!写得太乱了。自已看的。如果有人看到,请见谅文字太乱~~


 

转载自javaeye

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值