编程资料集中营
 | 网站首页 | 文章中心 | 编程资料2 | 软件下载 | BT下载 | 八卦星闻 | 音乐在线 | 在线游戏 | 免费电影 | 进入问吧 | 
对非String类型进行校验时的出错处理,关于SpringMVC对非String类型进行校验时的出错处理我在对User.age(Integer型),进行校验时,如果输入的是字符总是出错:Failedtoconvertpropertyvalueoftype[java.lang.String]torequiredtype[java.lang.Integer]forpropertyage;nestedexceptionisjava.lang.NumberFormatException:Forinputstring:ff解决方法:1.本例用的是commons-validator的开源框架2.在Controller中加protectedvoid,
您现在的位置: 编程资料,学习资料,c,c++,vc,vc++,java,jsp,j2ee,j2me,asp,php >> 文章中心 >> JAVA 专区 >> Spring 技术 >> 文章正文
【字体:
对非String类型进行校验时的出错处理   进入问吧

本站地址:http://www.bajiao123.com

作者:佚名    文章来源:不详    点击数:    更新时间:2007-2-28    

对非String类型进行校验时的出错处理

关于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" 解决方法: 1.本例用的是commons-validator的开源框架 2.在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));        }

3.在资源文件ApplicationResources_zh_CN.properties 中加:   user.age=\u5e74\u9f84 typeMismatch.java.lang.Integer={0}\u5fc5\u987b\u4e3a\u4e00\u6570\u503c\u3002 4.一些朋友说在用非对象类型如int时也总是出错,但我在测试时发现不管是用int 还是用float,如果不输或输入字符,系统均会自动赋值 int为0,float为0.0   5.以下是一个不错的入门文章,转发于” jamyy2000的专栏”:    关于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的步骤: 1.       在配置文件中声明ValidatorFactory 和 BeanValidator:   <bean id="validatorFactory" class="org.springmodules.commons.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="org.springmodules.commons.validator.DefaultBeanValidator"> -------③              <property name="validatorFactory">                      <ref bean="validatorFactory" /> --------④              </property>  </bean>   ①     声明validatoFactory这里我们使用spring 的DefaultValidatorFactory ②     定义其validationConfigLocations属性,将validator-rules.xml和validation.xml传入 ③     声明beanValidator这里我们使用spring的DefaultBeanValidator ④     在其属性中指明要使用的validatorFactory。这里我们使用刚刚定义的validatorFactory   2.       在需要进行验证的controller(即要使用form表单或者command的controller)中声明validate。   <beanid="xxxxController" ……> <property name="commandName" value="userCommand"/> -----① <property name="commandClass" value="com.resoft.User"/>   -----② <property name="validator" ref="beanValidator"/>   -------③      …… </bean>   ①     commandName用于指明需要验证的 command的名字,这个名字必须和 validation.xml中<formname=" xxxxx "> 所写的名字保持一致。 ②     commandClass用于指定这个command的类型。其必须与你jsp提交的form最后形成的command类型相一致。 ③     声明该controller使用validator,这里将我们刚刚定义的beanValidator传入进去。  

[1] [2] 下一页  


   

进入问吧

本站地址:http://www.bajiao123.com

文章录入:admin    责任编辑:admin 
高级搜索
编程资料集中营