`

SpringMVC绑定基本类型参数的问题

阅读更多
在使用SpringMVC绑定基本类型(如String,Integer等)参数时,应通过@RequestParam注解指定具体的参数名称,否则,当源代码在非debug模式下编译后,运行时会引发HandlerMethodInvocationException异常,这是因为只有在debug模式下编译,其参数名称才存储在编译好的代码中。

譬如下面的代码会引发异常:
@RequestMapping(value = "/security/login", method = RequestMethod.POST)
public ModelAndView login(@RequestParam String userName, @RequestParam String password, 
    HttpServletRequest request) {
    ......................



如果使用Eclipse编译不会在运行时出现异常,这是因为Eclipse默认是采用debug模式编译的,但是如果使用Ant通过javac任务编译的话就会出现异常,除非指定debug=”true”。出现的异常如同:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.web.bind.annotation.support.HandlerMethodInvocationException: Failed to invoke handler method [public org.springframework.web.servlet.ModelAndView com.mypackage.security.controller.LoginController.login(java.lang.String,java.lang.String,javax.servlet.http.HttpServletRequest)]; nested exception is java.lang.IllegalStateException: No parameter name specified for argument of type [java.lang.String], and no parameter name information found in class file either.
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:659)
..........

org.springframework.web.bind.annotation.support.HandlerMethodInvocationException: Failed to invoke handler method [public org.springframework.web.servlet.ModelAndView com.mypackage.security.controller.LoginController.login(java.lang.String,java.lang.String,javax.servlet.http.HttpServletRequest)]; nested exception is java.lang.IllegalStateException: No parameter name specified for argument of type [java.lang.String], and no parameter name information found in class file either.
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:171)
..........


java.lang.IllegalStateException: No parameter name specified for argument of type [java.lang.String], and no parameter name information found in class file either.
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.getRequiredParameterName(HandlerMethodInvoker.java:618)
..........

最好的做法是通过@RequestParam注解指定具体的参数名称,如,上面的代码应该如此编写(注意@RequestParam部分):
@RequestMapping(value = "/security/login", method = RequestMethod.POST) 
public ModelAndView login(@RequestParam("userName") String userName, 
    @RequestParam("password") String password,  
    HttpServletRequest request) { 
    ......................


参考:http://stackoverflow.com/questions/2622018/compile-classfile-issue-in-spring-3
分享到:
评论
2 楼 tiantianshagn 2016-06-24  
谢谢 
1 楼 hekuilove 2012-03-19  
如果是Integer呢?

相关推荐

    springmvc基础.docx

    springmvc基础 包含代码+知识点+详细解释 1. 什么是springmvc? 2. springmvc框架原理 前端控制器、处理器映射器、处理器适配器... 参数绑定(简单类型、pojo、集合类型) 自定义参数绑定 6. springmvc和struts2区别

    SpringMVC——处理器方法参数的处理.docx

    1、框架把ServletRequest对象和请求参数传递给DataBinder ; 2、DataBinder 首先调用Spring Web环境中的ConversionService组件,进行数据类型转换和格式化等操作,将ServletRequest中的信息填充到形参对象中; 3、...

    springmvc入门程序(下载后你不会后悔的)

    springmvc框架原理(掌握) 前端控制器、处理器映射器、处理器适配器、视图解析器 springmvc入门程序 ... 参数绑定(简单类型、pojo、集合类型(明天讲)) 自定义参数绑定(掌握) springmvc和struts2区别

    springmvc第一天课堂笔记

    springmvc框架原理(掌握) 前端控制器、处理器映射器、处理器适配器、视图解析... 参数绑定(简单类型、pojo、集合类型(明天讲)) 自定义参数绑定(掌握) springmvc和struts2区别 springmvc和struts2的区别

    SpringMVC学习笔记整合搭建框架

    a)数组类型的参数绑定 b)List类型的绑定 2、@RequestMapping注解的使用 3、Controller方法返回值 4、SpringMVC中异常处理 5、图片上传处理 6、Json数据交互 7、SpringMVC实现RESTful 8、拦截器 2.Spring入门 2.1....

    springmvc思维导图

    springmvc的概念、springmvc的运行原理(前端控制器、处理器映射器、处理器适配器、处理器、视图解析器)、同步请求的方式(ModelAndView、String、无返回值、默认的绑定值)、异步请求的注解、请求参数的封装(简单...

    springmvc高级.docx

    springmvc的高级应用 包含代码+知识点+详细解释 1. 参数绑定(集合类型) 2. 数据回显 3. 上传图片 4. json数据交互 5. RESTful支持 6. 拦截器

    SpringMVC-3 映射请求参数和请求头

    使用@RequestParam、@RequestHeader和@CookieValue注解分别映射请求参数、请求头和Cookie值信息到相应处理方法的入...另外,SpringMVC也支持使用POJO对象绑定请求参数,且也可以使用Servlet原生API作为目标方法的形参。

    SpringMVC第一天学习代码

    这是SpringMVC第一天的学习代码,包含SpringMVC的入门案例、请求参数的各种绑定,以及中文乱码的解决还有自定义类型转换器的定义

    ssm_springmvc_canshu

    由于日期数据有很多种格式,所以springmvc没办法把字符串转换成日期类型。所以需要自定义参数绑定。

    SpringMVC【入门】篇

    概念三层框架SpringMVC运行原理SpringMVC入门补充:请求参数的绑定(非常重要)1. 请求参数邦定入门2. 请求参数绑定实体类型3. 请求参数绑定集合类型4.自定义类型转换器代码编写细节:怎么通过SpringMVC获取Servlet...

    SpringMVC(一)基础入门看这篇

    文章目录一、SpringMVC的基本概念1.1 关于三层架构和MVC1.2 SpringMVC概述1.2.1 SpringMVC是什么1.2.2 SpringMVC在三层架构的位置1.2.3 SpringMVC的优势1.2.4 SpringMVC 和 Struts2 的优略分析二、SpringMVC入门案例...

    第12章Spring MVC参数绑定的验证

    第12章Spring MVC参数绑定的验证 简单数据类型绑定 默认数据类型绑定 POJO类型 复杂数据类型绑定(数组、集合)

    Spring MVC处理参数中的枚举类型通用实现方法

    主要给大家介绍了关于Spring MVC处理参数中的枚举类型通用实现方法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧

    spring杂谈 作者zhang KaiTao

    1.23 扩展SpringMVC以支持绑定JSON格式的请求参数 1.24 扩展SpringMVC以支持绑定JSON格式的请求参数 1.25 在应用层通过spring特性解决数据库读写分离 1.26 context:component-scan扫描使用上的容易忽略的use-default...

    Spring MVC 员工管理系统

    Spring提供了丰富的处理器类型,在真正处理业务逻辑前,有些处理器会事先执行两项预处理工作: 1)将HttpServletRequest请求参数绑定到一个POJO对象中; 2)对绑定了请求参数的POJO对象进行数据合法性校验; ④ ...

    SpringMVCxml绑定pojo造成的XXE

    它的作用类似word中的"宏",也可以理解为DW中的模板,你可以预先定义一个entity,然后在一个文档中多次调用,或者在多个文档中调用同一个entity(XML定义了两种类型的entity。一种是我们这里说的普通entity,在XML...

    fastweixin微信公众平台服务器 v1.3.14

    提供了基于springmvc以及基于servlet框架的控制器,集成了微信服务器绑定、监听所有类型消息的方法;使用时继承,重写即可,十分方便。 fastweixin 更新日志:v1.3.14 更新1.模板消息报文同步为官方文档报文格式,...

    Spring MVC 3.0实战指南.ppt

    其他类型的参数 HttpMessageConverter HttpMessageConverter实现类 使用@RequestBody/@ResponseBody 使用HttpEntity<T>/ResponseEntity<T> 输出XML和JSON 使用HttpEntity<T>/ResponseEntity<T> 目录 数据绑定机理 ...

    ssm-highclass:使用ssm框架编写的商品管理项目

    主要知识有包装类型pojo参数绑定(即类中不是简单类型的属性,而是另外的pojo),list参数绑定,数据回显,上传图片,json交互,RESTful架构,拦截器等。此次开发是基于之前的项目ssm-getting-started进一步提升的,...

Global site tag (gtag.js) - Google Analytics