struts2 默认的提示

action类中validate方法,birthday是Date类型的if(birthday==null){addFieldError("birthday","birth... action类中validate方法,birthday是Date类型的
if (birthday ==null) {
addFieldError("birthday", "birthday error");
}
当jsp页面如果不输入 那么显示的错误提示是对的,只有birthday error
而当jsp页面如果输入一个字符串不是日期格式,那么struts2自带的类型转换错误提示显示出来了 而且因为类型转换失败birthday==null 所以自定义的验证也显示出来了
怎么让转型错误的时候只显示默认的提示 不都显示出来
展开
 我来答
zengzhf
2010-07-22 · 超过10用户采纳过TA的回答
知道答主
回答量:21
采纳率:0%
帮助的人:0
展开全部
因为struts2中默认验证是先进行类型转换紧接着是验证,试想如果没有类型转换,验证就无从谈起,所以struts2中的类型转换和验证在逻辑上是被看成一个操作。其具体的实现是通过三个拦截起来进行的,在struts2-core包的struts-default.xml中的默认拦截器栈defaultStack中可以找到三个紧挨着的拦截器:
<interceptor-ref name="params">
<param name="excludeParams">dojo\..*,^struts\..*</param>
</interceptor-ref>
<interceptor-ref name="conversionError"/>
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
为了达到逻辑上作为一个操作的目的,struts2在类型转换的拦截器params中当出现类型转换错误时并没有抛出异常,而是将异常信息保存到ActionContext中,然后通过拦截器conversionError将其类型转换异常信息封装到为fieldError里,但在拦截器validation中当出现验证错误时也会将其封装到为fieldError里,同时当发现有fieldError时会抛出异常将系统转入input视图,所以就会出现你上面的情况。解决的办法有三个:
第一,也是最好的解决方法是在客户端的js验证输入格式来加以限制了。
第二,使用自己定义的拦截器栈,将上面的拦击器conversionError去掉,这样类型转换时的错误信息就不会出现在fieldError里,不过这样做是否会出现其它意想不到的小错误我没有验证过。
第三,自己定义类型转换拦截器替换默认的类型转换拦截器,当出现类型转换错误时将型转换异常信息封装到为fieldError里同时抛出异常将系统转入input视图,则下面的验证就不会进行。
大雅新科技有限公司
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,... 点击进入详情页
本回答由大雅新科技有限公司提供
沧济先生
2010-07-21 · TA获得超过193个赞
知道小有建树答主
回答量:246
采纳率:0%
帮助的人:152万
展开全部
判断条件用birthday.equals("")试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
熄灭的神光
2010-07-21 · 超过22用户采纳过TA的回答
知道答主
回答量:91
采纳率:0%
帮助的人:68.3万
展开全部
sturts自带的服务器端验证和客户端验证框架,用validate xml来进行验证,不用自己写代码。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式