struts2类型转换失败后

问题描述

大家好,  关于struts2的类型转换,本人有个疑问。   比如我的action中有一个Integer类型的number,且增加了不能为空的校验器,提示信息为:number can not be null.   在表单中,我故意在number表单域输入abc,那么在提交表单后,首先会发生转换,转换失败后,会把转换失败信息加到fieldError里面,并且把number字段设置成null值,再进入验证,这时不能为空的校验器肯定不能通过,最终进入input指定的页面,并提示错误信息number must be numeric.(在资源文件中增加了xwork.default.invalid.fieldvalue={0} must be numeric.)number can not be null.我想问的是有没有什么方法,可以在类型转换失败后,不进入字段验证,而是直接返回input,这样给用户的感觉会更好。

解决方案

不可以,类型转换之后肯定要进行输入校验。要不然struts2对那些类型转换不成功的字段设置默认值不就没有意义了。自己的一点看法,仅供参考!
解决方案二:
首先更正楼上的说法,配置文件的xml校验同样可是实现前台校验的功能,说明你对struts2的校验用的还少 难道你说的不能用短路校验来实现吗?既然是对一个字段的校验,完全可以用短路校验来实现。
解决方案三:
验证一个字段是不是null的这种验证最好方正前台做,可以减轻服务器压力的,其实是不是数字也能放在前台做如下引用字段.value.match(/^[0-9]d*$/)
解决方案四:
你为什么不在前台做一下类型的检验呢

时间: 2024-09-30 23:41:04

struts2类型转换失败后的相关文章

struts2校验失败后,数据不存在的问题

问题描述 example: 有一个表单A中的<s:select>的list数据来自action B的list属性,但当表单A提交至action C校验失败后返回表单A所在的页面,此时会因为list数据不存在而报错,请问有什么方法可以解决这个问题呢? 解决方案 可以在Action中实现prepare方法,将list数据获取写在prepare方法中.你也可以用Ajax获取list解决方案二:可以在表单的页面中做个判断,是否为空为空就显示请选择,不为空就让list的数据显示例如:<tr>

struts2_自定义类型转换失败的提示信息

之前有一段时间,我老是把struts2的validate验证与类型转换混为一谈.最近才发现两者是两回事. 从拦截器配置不可以看来.找到struts-default.xml:发现如下代码: <interceptor-stack name="defaultStack"> <!--类型转换错误的拦截器 --> <interceptor-ref name="conversionError"/> <!--数据校验的拦截器 -->

正版XP系统验证失败后黑屏怎么办

  正版XP系统验证失败后黑屏怎么办: 1.开机进入桌面变为纯黑色(可以手动更换桌面) 2.每隔1个小时桌面将再度变为黑屏 3.用户登录时会出现登录中断对话框 4.屏幕右下方出现一个永久通知和持续提醒的对话框,显示"您可能是软件盗版的受害者" Office症状如下: 1.正版验证失败,首次打开软件,并且在此后2小时将分别收到盗版信息提醒 2.从验证失败第30天,Office菜单栏将被加上"不是正版"的视觉标记 解决方法: 1.近期关闭系统自动更新.进入我的电脑→属性

ado net-Datatable dt 接受 sqldatereader 总是出现类型转换失败

问题描述 Datatable dt 接受 sqldatereader 总是出现类型转换失败 DAL 是用 sqldatereader 写的 在Load cs里面 Datatable dt 接受 sqldatereader ## 总是出现类型转换失败 如 List u= DAL.sqldatereader .... Datatable dt= DAL.sqldatereader.... 都失败 解决方案 本来就不能这么转换,你可以写 List<user> u = new List<user

联机热备份失败后,如何打开数据库?

备份|热备份|数据|数据库 联机热备份失败后,如何打开数据库?系统环境: 1.操作系统:Windows 20002.数据库: Oracle 8i R2 (8.1.6) for NT 企业版3.安装路径:C:\ORACLE错误现象: 进行联机热备份时,服务器发生故障,如掉电,重新启动服务器,启动数据库时,无法打开数据库,Oracle要求进行介质恢复,因为表空间还处在热备份状态.模拟现象及解决方法: 先将数据库设置为归档模式C:\>svrmgrlsvrmgrl>connect internalsv

新站交换友情链接失败后的反思

一个月前自己构建了一个小小的站点,这个站点主要是用于做淘宝客的.由于自己多少了解了一点点SEO的知识,就开始对这个站进行SEO优化.SEO的工作都知道,每天就是发一些原创或者是伪原创的内容,然后再好网站内部的链接和外部链接,检查一下内容的收录情况等.一个半月下来也有了一点点的成就,一个竞争比较大的关键字也在Google里获得了不错的排名.说实话,对于一个新手菜鸟来说,获得这样的排名还是很令我兴奋的. 在优化这个小站的时候,不断的去测试自己学到的一点又一点的SEO知识,看到底有没有用.也在不断的学

邮件发送失败后路由器的工作机制

一封邮件发送失败后,路由器(router)任务会根据"初始传送重试间隔"域中指定的值进行重新尝试."初始传送重试间隔"域位于服务器配置文档中,可以在路由器/SMTP-〉限制和控制-〉传输控制下找到.用户可以在域中指定一个整数,其单位为分钟,路由器会根据这个设置来控制邮件的重新发送. Notes邮件路由(router任务)可以基于NRPC协议和SMTP协议来发送邮件.如果一封邮件发送失败了,它会保存在mail.box中等待路由器重新进行发送.缺省来讲,一封邮件在mai

邮件发送失败后路由器如何工作

一封邮件发送失败后,路由器(router)任务会根据"初始传送重试间隔"域中指定的值进行重新尝试."初始传送重试间隔"域位于服务器配置文档中,可以在路由器/SMTP-〉限制和控制-〉传输控制下找到.用户可以在域中指定一个整数,其单位为分钟,路由器会根据这个设置来控制邮件的重新发送. Notes邮件路由(router任务)可以基于NRPC协议和SMTP协议来发送邮件.如果一封邮件发送失败了,它会保存在mail.box中等待路由器重新进行发送.缺省来讲,一封邮件在mai

XP升级到Vista失败后无法启动怎么办?

  当您在升级到 Windows Vista 失败后尝试启动,但却不能进入windows xp 系统也无法进入Vista,而是显示黑屏以及一条闪烁的底线. 当出现这种问题时该如何解决呢?看看下面的解决步骤吧: 1.使用 windows xp CD 启动计算机. 2.在"欢迎使用安装程序"屏幕上,按 R 修复 Windows. 3.登录到要修复的 windows xp 安装中. 4.键入 fixboot,然后按 Enter. 5.键入 y,然后按 Enter 确认要向系统分区中写入新的启