Java资源网

| JAVA基础 | 环境配置 | JDBC | 线程技术 | Socket编程 | JavaMail | JAVA与XML | 设计模式 | 技术新闻 | Java认证 | 程序人生 软件下载
| JSP&Servlet | Spring | Struts | Hibernate | JBuilder | Eclipse | WebService | EJB技术 | J2ME开发 | 应用服务器 | JXTA | Ajax
Articles search文章搜索
   关键字:
   类 别:
       
New download 最新下载
· [组件]HTML Parser 1.5
· [教程]WebSphere Studio应用教程
· [组件]JDom 1.0
· [工具]Junit3.8.1
· [教程]EJB编程及J2EE系统架构和设计
· [教程]EJB教程
· [教程]J2EE Tutorial中文版
· [教程]Java编程思想2(英文)
· [教程]java编程思想(完整版)
· [教程]Java网络编程
New articles 最新文章
· 设计移动 Web 服务
· 解析XML的时候完全忽略DTD
· 理解XML Schema XML Schema 初步
· 标签库的深入研究
· 提升JSP应用程序的七大绝招
· 如何使用JDOM对XML文件进行操作
· 处理XML字符串中特殊字符
· 利用Digester把XML转换成为Java对象
· 使用WebService 和RMI远程协作
· 使用Axis开发Web Service程序
Articles top 热门文章
· Eclipse基础--plugin插件安装(6644)
· eclipse+tomcat+lomboz的安装配置说明(4774)
· Java程序员就业前景(4584)
· Windows下JAVA环境变量的设置祥解(3788)
· Tomcat下JSP、Servlet和JavaBean环境的配置(3716)
· 使用links方式安装Eclipse插件(3698)
· 一个老程序员的心理话(3533)
· linux下jdk的安装与配置(3459)
· 初学者入门:Structs中基本配置入门(3334)
· Eclipse 运行命令行参数大全(3084)
您的位置:首页>>Spring>>对非String类型进行校验时的出错处理
对非String类型进行校验时的出错处理
2007-04-17   来源:Java资源网  作者:Java资源网
关于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的使用说明
springvalidate验证需要两个beanValidatorFactoryBeanValidator)及两xml文件(validator-rules.xmlvalidation.xml)的支持,ValidatorFactory用于制造BeanValidator,后者则是在程序中执行校验的控制beanValidatorrules.xml中定义了各种验证的规则,如字段不为空,字段输入值必须为整数等等。Validation.xml中则定义了那些beanbean中的哪些属性字段需要验证,使用哪些验证规则。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.xmlvalidation.xml传入
     声明beanValidator这里我们使用springDefaultBeanValidator
     在其属性中指明要使用的validatorFactory。这里我们使用刚刚定义的validatorFactory
 
2.       在需要进行验证的controller(即要使用form表单或者commandcontroller)中声明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传入进去。
 

  --相关文章--
· 用代码学习Spring:IoC、AOP (2007-04-17)
· 用Spring更好地处理Struts动作三种整合 (2007-04-17)
· 玩玩Spring之IOC (2007-04-17)
· 新手入门之Spring BeanDoc使用 (2007-04-17)
· 彻底理解spring的定制任务(scheduling) (2007-04-17)
· 对非String类型进行校验时的出错处理 (2007-04-17)

版权所有©2005-2006 JAVA资源网 渝ICP备05007591号 虚拟主机 | 关于我们 | 联系方式 | 广告业务 | 网站地图 | 友情链接