SpringMVC下,提交表单报400错:
description The request sent by the client was syntactically incorrect.
根据网上的总结,可能是因为如下几个问题引起的
1.参数指定问题
如果Controller中定义了参数,而表单内却没有定义该字段
@SuppressWarnings("deprecation") @RequestMapping("/hello.do") public String hello(HttpServletRequest request,HttpServletResponse response, @RequestParam(value="userName") String user ){ request.setAttribute("user", user); return "hello"; }
这里,表单内必须提供一个userName的属性!
不想指定的话,你也可以定义这个属性的默认值defaultValue="":
@SuppressWarnings("deprecation") @RequestMapping("/hello.do") public String hello(HttpServletRequest request,HttpServletResponse response, @RequestParam(value="userName",defaultValue="佚名") String user ){ request.setAttribute("user", user); return "hello"; }
也可以指定该参数是非必须的required=false:
@SuppressWarnings("deprecation") @RequestMapping("/hello.do") public String hello(HttpServletRequest request,HttpServletResponse response, @RequestParam(value="userName",required=false) String user ){ request.setAttribute("user", user); return "hello"; }
2.上传问题
上传文件大小超出了Spring上传的限制
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 设置上传文件的最大尺寸1024字节=1K,这里是10K --> <property name="maxUploadSize"> <value>10240</value> </property> <property name="defaultEncoding"> <value>UTF-8</value> </property> </bean>
我们工程里面是这个问题引起的,但是我实际示例中发现超过大小是直接报错的。
3.时间转换问题
也有网友说是因为时间转换引起的,而我实际操作中发现报错是:
The server encountered an internal error that prevented it from fulfilling this request
这里也顺便提一下,假如你的Controller要一个时间对象,代码如下:
@SuppressWarnings("deprecation") @RequestMapping("/hello.do") public String hello(HttpServletRequest request,HttpServletResponse response, @RequestParam(value="userName",defaultValue="佚名") String user, Date dateTest ){ request.setAttribute("user", user); System.out.println(dateTest.toLocaleString()); return "hello"; }
而网页上实际给的是
<input type="text" name="dateTest" value="2015-06-07">
这里需要在Controller增加一个转换器
@InitBinder public void initBinder(WebDataBinder binder) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); dateFormat.setLenient(false); binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false)); }
请您到ITEYE网站看 java小强 原创,谢谢!
http://cuisuqiang.iteye.com/ !
自建博客地址:http://www.javacui.com/ ,内容与ITEYE同步!
相关推荐
《Spring In Action: SpringMVC 提交表单详解》 在Web开发中,SpringMVC作为Spring框架的一部分,是处理HTTP请求和响应的强大工具。它为开发者提供了构建高性能、易于测试的Web应用程序的结构。本篇文章将深入探讨...
总结,Spring MVC提供了强大的功能来处理各种类型的HTTP请求和参数,无论是Ajax还是传统的表单提交。通过合理使用`@RequestBody`和`@ModelAttribute`注解,以及适当的参数类型,你可以轻松地处理包括集合在内的复杂...
这种方法可以避免再次提交表单数据,因为它不会将原始请求的POST数据发送到新URL。 重定向在实际应用中非常常见,比如在完成某个操作后,比如用户注册或购物结算,通常会重定向到一个新的页面来显示结果或提示信息...
二是支持使用除GET和POST之外的HTTP方法(如DELETE、PUT)提交表单数据。 ###### 1.1 绑定表单对象 `<form:form>` 标签可以绑定表单数据到一个指定的对象上,通常是控制器中传递给视图的一个模型对象。例如,假设...
- **数据类型不匹配**:请求中的数据类型和控制器方法参数类型不一致时会导致错误,例如前端发送的是字符串类型的数字,而后端期待的是整型。 - **缺少数据**:如果前端忘记发送某个必须的参数,而后端的控制器...
表单数据通常以POST请求的方式发送,SpringMVC会自动将这些参数绑定到控制器方法的参数上。对于简单类型,如`long`、`int`等,可以使用`@RequestParam`注解。对于复杂对象,可以直接作为方法参数,Spring会尝试将...
6. **数据绑定与验证**:SpringMVC支持数据绑定,即自动将表单提交的数据映射到Java对象的属性上。同时,可以使用JSR-303/JSR-349提供的注解进行数据验证,如`@NotBlank`、`@Size`等。 7. **处理器适配器...
3. 订单提交表单 4. 评论表单 SpringMVC表单标签是SpringMVC框架中的一种重要组件,用于处理表单数据。它提供了多种类型的表单标签,各自具有不同的属性和用途。通过使用SpringMVC表单标签,可以简化表单的开发过程...
3. **Redirect重定向**:处理完表单后,使用HttpServletResponse的`sendRedirect()`方法,将用户重定向到另一个页面,这样即使用户刷新页面,也不会重新提交表单。 4. **使用同步锁(synchronized)**:在Servlet...
SpringMVC接收页面表单参数 SpringMVC是基于Java实现的 Model-View-Controller(MVC)模式的Web应用框架,它提供了许多强大和灵活的特性来处理Web请求。其中,接收页面表单参数是Web应用中非常常见的需求。下面...
SpringMVC中使用Bean来接收Form表单提交的参数时的注意点 在 SpringMVC 框架中,使用 Bean 来接收 Form 表单提交的参数是非常常见的操作。然而,在这个过程中,需要注意一些细节,以免出现问题。本文将介绍 ...
命令对象是一种特殊的模型属性,专门用于处理表单提交。它们与`@ModelAttribute`一起使用,但更专注于表单验证和数据绑定: ```java @PostMapping("/submit") public String submitForm(@Validated @...
总结,Spring MVC的参数绑定机制极大地提高了开发效率,无论是简单的表单提交还是复杂的AJAX请求,都能轻松处理。通过合理的注解使用和自定义处理器,我们可以构建出高效且健壮的Web应用。在这个例子中,"testgit...
本文将深入解析SpringMVC如何处理GET和POST请求中的参数,以及如何使用@RequestParam和@RequestBody注解。 1. GET请求 GET请求通常用于获取资源,其参数直接附加在URL路径后面,以键值对的形式存在。例如,`/api/...
3. **自定义注解**:SpringMVC允许开发者创建自定义的数据验证注解,比如`@Validated`,它可以应用于控制器方法的参数上,指示Spring进行验证。这些注解可以与JSR-303/JSR-349标准的注解(如`@NotNull`, `@Size`, `@...
例如,当用户提交表单时,表单字段通常会作为查询参数或POST数据发送。通过在方法参数前加上`@RequestParam`并指定对应的参数名,Spring MVC会自动将请求中的相应参数值绑定到该方法参数上。例如: ```java @...
SpringMVC入门参数绑定SSM整合 SpringMVC是一种基于MVC模式的Web应用程序框架,它是Spring框架的一个模块,用于开发Web项目。下面是SpringMVC入门参数绑定SSM整合的知识点总结: 一、SpringMVC概述 SpringMVC是...
第二步是如果不匹配,可以通过@RequestParam注解指定request请求的参数名绑定到哪个方法形参上。 @RequestParam注解可以指定request请求的参数名绑定到哪个方法形参上,並可以设置必填的参数通过required属性设置为...
1. **表单提交,以字段数组接收** 这是最基础的方法,通过在HTML表单中定义相同名称的输入字段,但通过数组索引来区分不同的数据。例如,创建两个用户时,可以分别输入ID、用户名和密码,每个字段都带有不同的索引...
type: "post", // 提交方式,表单只能以 post 方式提交 async: true, // 如果需要发送同步请求,请将此选项设置为 false contentType: "application/x-www-form-urlencoded", success: function(data) { alert...