知识大全 对非String类型进行校验时的出错处理

Posted

篇首语:人心隔肚皮,看人看行为。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 对非String类型进行校验时的出错处理相关的知识,希望对你有一定的参考价值。

对非String类型进行校验时的出错处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

关于Spring MVC对非String类型进行校验时的出错处理    我在对User age (Integer型) 进行校验时 如果输入的是字符总是出错: Failed to convert property value of type [java lang String] to required type [java lang Integer] for property age; nested exception is java lang NumberFormatException: For input string: ff 解决方法: 本例用的是mons validator的开源框架 在Controller中加 protected void initBinder(HttpServletRequest request        ServletRequestDataBinder binder)                     binder registerCustomEditor(Integer class null new CustomNumberEditor(Integer class null true));               binder registerCustomEditor(Long class null new CustomNumberEditor(Long class null true));               binder registerCustomEditor(byte[] class new ByteArrayMultipartFileEditor());               SimpleDateFormat dateFormat = new SimpleDateFormat(getText( date format request getLocale()));               dateFormat setLenient(false);               binder registerCustomEditor(Date class null new CustomDateEditor(dateFormat true));        在资源文件ApplicationResources_zh_CN properties 中加:   user age=\\u e \\u f typeMismatch java lang Integer= \\u fc \\u b\\u e a\\u e \\u \\u c\\u 一些朋友说在用非对象类型如int时也总是出错 但我在测试时发现不管是用int 还是用float 如果不输或输入字符 系统均会自动赋值 int为 float为   以下是一个不错的入门文章 转发于 jamyy 的专栏 :   关于Spring中Commons Validator的使用说明 spring的validate验证需要两个bean(ValidatorFactory BeanValidator)及两xml文件(validator rules xml validation xml)的支持 ValidatorFactory用于制造BeanValidator 后者则是在程序中执行校验的控制bean Validatorrules xml中定义了各种验证的规则 如字段不为空 字段输入值必须为整数等等 Validation xml中则定义了那些bean及bean中的哪些属性字段需要验证 使用哪些验证规则 validate 分为两级验证 客户端验证(javascript)和服务器端验证 以下是使用validate的步骤        在配置文件中声明ValidatorFactory 和 BeanValidator   <bean id= validatorFactory class= omons validator DefaultValidatorFactory > ①              <property name= validationConfigLocations > ②                <list>                       <value>/WEB INF/validator rules xml</value>                       <value>/WEB INF/validation xml</value>                  </list>              </property>         </bean>         <bean id= beanValidator class= omons validator DefaultBeanValidator > ③              <property name= validatorFactory >                      <ref bean= validatorFactory />  ④              </property>  </bean>   ①     声明validatoFactory这里我们使用spring 的DefaultValidatorFactory ②     定义其validationConfigLocations属性 将validator rules xml和validation xml传入 ③     声明beanValidator这里我们使用spring的DefaultBeanValidator ④     在其属性中指明要使用的validatorFactory 这里我们使用刚刚定义的validatorFactory          在需要进行验证的controller(即要使用form表单或者mand的controller)中声明validate   <beanid= xxxxController ……> <property name= mandName value= userCommand />  ① <property name= mandClass value= resoft User />   ② <property name= validator ref= beanValidator />   ③      …… </bean>   ①     mandName用于指明需要验证的 mand的名字 这个名字必须和 validation xml中<formname= xxxxx > 所写的名字保持一致 ②     mandClass用于指定这个mand的类型 其必须与你jsp提交的form最后形成的mand类型相一致 ③     声明该controller使用validator 这里将我们刚刚定义的beanValidator传入进去          在validation xml文件中 定义你要校验的formbean(或者说是mand) 定义这个bean中有哪几个field需要验证 使用何种规则验证 (注意 这里定义的form name 必须和前面controller中定义的mandName保持一致)以下是几种常用的验证示例   <form validation> <formset> <form name= userCommand > ①                <field property= userId depends= required > ②                         <arg key= 用户代码 /> ③                                                          </field>                                                                      ①    这里是定义要验证的bean的名字 要求去上面定义的mandName相同 ②    这里定义要验证的bean属性为userId 使用规则为required(不为空) ③    这里定义的是显示信息 arg 表示位置 的显示信息 显示key 所标明的信息(如果你还有多个信息就用 arg arg 等)出错信息将会显示为  用户代码不能为空      <field property= age depends= required integer mask > ①                    <arg key= 年龄 />                    <msgname= mask key= errors negative /> ②                    <var>                       <var name>mask</var name>                       <var value>^[ ]</var value> ③                    </var>         </field>   ①   mask 标记验证 使用正则表达式来约束表单输入值 (如 只能输入数字 字母或指定的字符) ②   msg标签用来定义验证规则和出错信息的关联 这里表示当出现 mask 校验失败时 显示 errors negative指明的信息 ③      整个<var>标签就是用来定义具体的规则的 如<var name>mask</var name>指明是用于mask的规则 <var value>^[ ]</var value> 表示只允许 这几个数字开头 所以上面验证信息是年龄字段不可以为空 必须为整数 而且必须为 开头也就杜绝了负数和零的情况                           <field property= birthday depends= required date > ①                   <arg key= 生日 />                   <var>                        <var name>datePatternStrict</var name> ②                        <var value>yyyy MM dd</var value>  ③                    </var>         </field>         </formset>   ①   使用 date 加入对日期的格式的校验 ②         开始定义日期格式 var name必须写为datePatternStrict ③         定义你希望的日期格式如 yyyy mm dd yy/mm/dd 等等都可以     <field property= startDate depends= required date >               <arg key= 开始日期 />               <var>                    <var name>datePatternStrict</var name>                    <var value>yyyy MM dd</var value>                 </var>        </field>        <field property= endDate depends= required date pareTwoField > ①               <arg key= 结束日期 />               <arg key= 开始日期 />   ②               <var>                    <var name>datePatternStrict</var name>                    <var value>yyyy MM dd</var value>             </var>             <var>                <var name>secondField</var name>  ③                <var value>startDate</var value>             </var>        </field>   ①         这里演示的是两个日期的验证 要达到开始日期不能晚于结束日期 加入pareTwoField验证规则 ②         定义第 个显示参数agr 开始日期 ③         加入一个var其var name为secondField(这个是在程序中写死的 必须写为secondField) ④         var value定义为开始日期的属性名 如在本例中为 startDate   注 pareTwoField 是我们自己编写的一个校验规则 用于比较两个字段值大小    在jsp页面中定义错误信息显示语句   <spring:bindpath= tableCrashDO * >    ①     <c:iftest= $not empty status errorMessages >     <div class= error >           <c:forEachvar= error items= $status errorMessages >             <c:outvalue= $error escapeXml= false /><br/>         </c:forEach>     </div>     </c:if> </spring:bind>   ①      这里的path必须要与传入该jsp的bean的名字一样 如传入该jsp的数据bean叫tableCrashDO path就应该写为tableCrashDO *   .使客户端产生javascript代码   <v:javascriptformName= tableCrashDO     ① staticJavascript= false x= true cdata= false /> <script type= text/javascript src= <c:urlvalue= scripts/validator jsp /> ></script>   ①      v:javascript标签是spring的标签 定义在spring mons validator tld 其中formName必须与validation xml中form的name保持一致   如此以来 基本上可以算完成了validate的验证配置 (特别注意 controller 中的mandName validation xml中的form name jsp中v:javascript标签的formName三者必须保持一致 ) cha138/Article/program/Java/ky/201311/28107

相关参考

知识大全 . 对非货币性资产交换进行会计处理的基本原则是什么

.对非货币性资产交换进行会计处理的基本原则是什么?并举例说明以公允价值为基础计量换入资产成本如何进非货币性资产交换具有商业实质且公允价值能够可靠计量的,应当以换出资产的公允价值和应支付的相关税费,作为

知识大全 对string类型和stringBuilder类型的研究

对string类型和stringBuilder类型的研究  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 编程中string是不是引用类型

  在msdn上  值类型主要由两类组成  结构  枚举  结构分为以下几类  Numeric(数值)类型  整型  浮点型  decimal  bool  用户定义的结构  也就是string属于引

知识大全 Java当中的String数据类型

Java当中的String数据类型  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  java中St

知识大全 全面解析Java中的String数据类型

全面解析Java中的String数据类型  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 首先Str

知识大全 在.NET程序中正确使用String类型[2]

在.NET程序中正确使用String类型[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb

知识大全 在.NET程序中正确使用String类型[1]

在.NET程序中正确使用String类型[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb

经过检修的控制系统,启动操作系统后,除对出现的出错信息提示进行处理,启动磁盘检测和修复程序,对磁盘错误进行检测修复外,还

经过检修的控制系统,启动操作系统后,除对出现的出错信息提示进行处理,启动磁盘检测和修复程序,对磁盘错误进行检测修复外,还应()A、根据制造厂提供的软件列表,检查核对应用软件应完整B、搜索删除系统中的临

经过检修的控制系统,启动操作系统后,除对出现的出错信息提示进行处理,启动磁盘检测和修复程序,对磁盘错误进行检测修复外,还

经过检修的控制系统,启动操作系统后,除对出现的出错信息提示进行处理,启动磁盘检测和修复程序,对磁盘错误进行检测修复外,还应()A、根据制造厂提供的软件列表,检查核对应用软件应完整B、搜索删除系统中的临

高低压旁路控制系统的执行器,若机务进行过解体检修,则复位后须进行调整校验,调整校验应在()进行。

高低压旁路控制系统的执行器,若机务进行过解体检修,则复位后须进行调整校验,调整校验应在()进行。A、被调试阀门所在管道与其它运行系统隔离B、被调试阀门所在管道内无工作介质情况下C、液力系统和旁路控制系