`
zzc1684
  • 浏览: 1213984 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

SpringMVC 表单提交参数不匹配报错

阅读更多

SpringMVC下,提交表单报400错:

Java代码  收藏代码
  1. description The request sent by the client was syntactically incorrect.  

 

根据网上的总结,可能是因为如下几个问题引起的

 

1.参数指定问题
如果Controller中定义了参数,而表单内却没有定义该字段

Java代码  收藏代码
  1. @SuppressWarnings("deprecation")  
  2. @RequestMapping("/hello.do")  
  3. public String hello(HttpServletRequest request,HttpServletResponse response,  
  4.         @RequestParam(value="userName") String user  
  5. ){  
  6.     request.setAttribute("user", user);  
  7.     return "hello";  
  8. }  

 

这里,表单内必须提供一个userName的属性!
不想指定的话,你也可以定义这个属性的默认值defaultValue="":

Java代码  收藏代码
  1. @SuppressWarnings("deprecation")  
  2. @RequestMapping("/hello.do")  
  3. public String hello(HttpServletRequest request,HttpServletResponse response,  
  4.         @RequestParam(value="userName",defaultValue="佚名") String user  
  5. ){  
  6.     request.setAttribute("user", user);  
  7.     return "hello";  
  8. }  

 

也可以指定该参数是非必须的required=false:

Java代码  收藏代码
  1. @SuppressWarnings("deprecation")  
  2. @RequestMapping("/hello.do")  
  3. public String hello(HttpServletRequest request,HttpServletResponse response,  
  4.         @RequestParam(value="userName",required=false) String user  
  5. ){  
  6.     request.setAttribute("user", user);  
  7.     return "hello";  
  8. }  

 

2.上传问题

上传文件大小超出了Spring上传的限制

Java代码  收藏代码
  1. <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">    
  2.     <!-- 设置上传文件的最大尺寸1024字节=1K,这里是10K -->    
  3.     <property name="maxUploadSize">    
  4.         <value>10240</value>    
  5.     </property>  
  6.     <property name="defaultEncoding">    
  7.            <value>UTF-8</value>    
  8.     </property>    
  9. </bean>  

 

我们工程里面是这个问题引起的,但是我实际示例中发现超过大小是直接报错的。

 

3.时间转换问题

也有网友说是因为时间转换引起的,而我实际操作中发现报错是:

Java代码  收藏代码
  1. The server encountered an internal error that prevented it from fulfilling this request  

 

这里也顺便提一下,假如你的Controller要一个时间对象,代码如下:

Java代码  收藏代码
  1. @SuppressWarnings("deprecation")  
  2. @RequestMapping("/hello.do")  
  3. public String hello(HttpServletRequest request,HttpServletResponse response,  
  4.         @RequestParam(value="userName",defaultValue="佚名") String user,  
  5.         Date dateTest  
  6. ){  
  7.     request.setAttribute("user", user);  
  8.     System.out.println(dateTest.toLocaleString());  
  9.     return "hello";  
  10. }  

 

而网页上实际给的是

Java代码  收藏代码
  1. <input type="text" name="dateTest" value="2015-06-07">  

 

这里需要在Controller增加一个转换器

Java代码  收藏代码
  1. @InitBinder    
  2. public void initBinder(WebDataBinder binder) {    
  3.     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");    
  4.     dateFormat.setLenient(false);    
  5.     binder.registerCustomEditor(Date.classnew CustomDateEditor(dateFormat, false));    
  6. }  

  

请您到ITEYE网站看 java小强 原创,谢谢!
http://cuisuqiang.iteye.com/ 

自建博客地址:http://www.javacui.com/ ,内容与ITEYE同步!

分享到:
评论

相关推荐

    Spring In Action SpringMVC 提交表单

    《Spring In Action: SpringMVC 提交表单详解》 在Web开发中,SpringMVC作为Spring框架的一部分,是处理HTTP请求和响应的强大工具。它为开发者提供了构建高性能、易于测试的Web应用程序的结构。本篇文章将深入探讨...

    springmvc 第二个例子(接收表单参数+重定向)

    这种方法可以避免再次提交表单数据,因为它不会将原始请求的POST数据发送到新URL。 重定向在实际应用中非常常见,比如在完成某个操作后,比如用户注册或购物结算,通常会重定向到一个新的页面来显示结果或提示信息...

    springMvc集合接收参数的用法

    总结,Spring MVC提供了强大的功能来处理各种类型的HTTP请求和参数,无论是Ajax还是传统的表单提交。通过合理使用`@RequestBody`和`@ModelAttribute`注解,以及适当的参数类型,你可以轻松地处理包括集合在内的复杂...

    SpringMVC表单标签简介

    二是支持使用除GET和POST之外的HTTP方法(如DELETE、PUT)提交表单数据。 ###### 1.1 绑定表单对象 `&lt;form:form&gt;` 标签可以绑定表单数据到一个指定的对象上,通常是控制器中传递给视图的一个模型对象。例如,假设...

    基于SpringMVC接受JSON参数详解及常见错误总结

    - **数据类型不匹配**:请求中的数据类型和控制器方法参数类型不一致时会导致错误,例如前端发送的是字符串类型的数字,而后端期待的是整型。 - **缺少数据**:如果前端忘记发送某个必须的参数,而后端的控制器...

    SpringMVC接收请求参数所有方式总结

    表单数据通常以POST请求的方式发送,SpringMVC会自动将这些参数绑定到控制器方法的参数上。对于简单类型,如`long`、`int`等,可以使用`@RequestParam`注解。对于复杂对象,可以直接作为方法参数,Spring会尝试将...

    SpringMVC入门很简单之表单标签

    6. **数据绑定与验证**:SpringMVC支持数据绑定,即自动将表单提交的数据映射到Java对象的属性上。同时,可以使用JSR-303/JSR-349提供的注解进行数据验证,如`@NotBlank`、`@Size`等。 7. **处理器适配器...

    SpringMVC表单标签知识点详解

    3. 订单提交表单 4. 评论表单 SpringMVC表单标签是SpringMVC框架中的一种重要组件,用于处理表单数据。它提供了多种类型的表单标签,各自具有不同的属性和用途。通过使用SpringMVC表单标签,可以简化表单的开发过程...

    Servlet、Struts、SpringMVC对于表单重复提交的解决方案

    3. **Redirect重定向**:处理完表单后,使用HttpServletResponse的`sendRedirect()`方法,将用户重定向到另一个页面,这样即使用户刷新页面,也不会重新提交表单。 4. **使用同步锁(synchronized)**:在Servlet...

    SpringMVC接收页面表单参数

    SpringMVC接收页面表单参数 SpringMVC是基于Java实现的 Model-View-Controller(MVC)模式的Web应用框架,它提供了许多强大和灵活的特性来处理Web请求。其中,接收页面表单参数是Web应用中非常常见的需求。下面...

    SpringMVC中使用bean来接收form表单提交的参数时的注意点

    SpringMVC中使用Bean来接收Form表单提交的参数时的注意点 在 SpringMVC 框架中,使用 Bean 来接收 Form 表单提交的参数是非常常见的操作。然而,在这个过程中,需要注意一些细节,以免出现问题。本文将介绍 ...

    SpringMVC后台接收请求参数的几种方式Demo

    命令对象是一种特殊的模型属性,专门用于处理表单提交。它们与`@ModelAttribute`一起使用,但更专注于表单验证和数据绑定: ```java @PostMapping("/submit") public String submitForm(@Validated @...

    springmvc 参数绑定例子1

    总结,Spring MVC的参数绑定机制极大地提高了开发效率,无论是简单的表单提交还是复杂的AJAX请求,都能轻松处理。通过合理的注解使用和自定义处理器,我们可以构建出高效且健壮的Web应用。在这个例子中,"testgit...

    Http请求传参SpringMVC接收参数详细解析

    本文将深入解析SpringMVC如何处理GET和POST请求中的参数,以及如何使用@RequestParam和@RequestBody注解。 1. GET请求 GET请求通常用于获取资源,其参数直接附加在URL路径后面,以键值对的形式存在。例如,`/api/...

    springMVC Validator表单验证

    3. **自定义注解**:SpringMVC允许开发者创建自定义的数据验证注解,比如`@Validated`,它可以应用于控制器方法的参数上,指示Spring进行验证。这些注解可以与JSR-303/JSR-349标准的注解(如`@NotNull`, `@Size`, `@...

    springmvc 参数绑定例子

    例如,当用户提交表单时,表单字段通常会作为查询参数或POST数据发送。通过在方法参数前加上`@RequestParam`并指定对应的参数名,Spring MVC会自动将请求中的相应参数值绑定到该方法参数上。例如: ```java @...

    springmvc入门参数绑定ssm整合

    SpringMVC入门参数绑定SSM整合 SpringMVC是一种基于MVC模式的Web应用程序框架,它是Spring框架的一个模块,用于开发Web项目。下面是SpringMVC入门参数绑定SSM整合的知识点总结: 一、SpringMVC概述 SpringMVC是...

    SpringMVC自定义参数绑定实现详解

    第二步是如果不匹配,可以通过@RequestParam注解指定request请求的参数名绑定到哪个方法形参上。 @RequestParam注解可以指定request请求的参数名绑定到哪个方法形参上,並可以设置必填的参数通过required属性设置为...

    SpringMVC接收多个对象的4种方法

    1. **表单提交,以字段数组接收** 这是最基础的方法,通过在HTML表单中定义相同名称的输入字段,但通过数组索引来区分不同的数据。例如,创建两个用户时,可以分别输入ID、用户名和密码,每个字段都带有不同的索引...

    springmvc接收ajax请求注意事项

    type: "post", // 提交方式,表单只能以 post 方式提交 async: true, // 如果需要发送同步请求,请将此选项设置为 false contentType: "application/x-www-form-urlencoded", success: function(data) { alert...

Global site tag (gtag.js) - Google Analytics