Spring MVC : Not able to submit form data in JSON format

标签 spring spring-mvc

这样做时遇到以下异常。

HandlerMethod details: 
Controller [application.entry.controller.UserController]
Method [public java.lang.String application.entry.controller.UserController.handleSave(java.util.List<java.util.Map<java.lang.String, java.lang.String>>)]

org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded' not supported
    at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:124)[org.springframework.web.servlet-3.1.1.RELEASE.jar:3.1.1.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:91)[org.springframework.web.servlet-3.1.1.RELEASE.jar:3.1.1.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:71)[org.springframework.web.servlet-3.1.1.RELEASE.jar:3.1.1.RELEASE]

Controller 类:
@RequestMapping(value="/save", method=RequestMethod.POST)
@ResponseBody public String handleSave(@RequestBody List<Map<String, String>> client)
    {
        Map<String, String> formInputs = new HashMap<String, String>();

        for (Map<String, String> formInput : client) {
            formInputs.put(formInput.get("name"), formInput.get("value"));
        }

我确实尝试过 @RequestMapping(value="/save", method=RequestMethod.POST, headers = "Accept=application/json")也但错误是一样的。

spring-servlet.xml
<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
     <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
      <list>
        <ref bean="jacksonMessageConverter"/>
      </list>
    </property>
    </bean>

jQuery 提交:
$('form').submit(function () {
                    alert();
                    $.ajax({
                        url: $(this).attr('action'),
                        type: 'POST',
                        data: JSON.stringify($(this).serializeArray()),
                        contentType: 'application/json',
                        success: function (data) {
                            alert('data')
                        },
                        error: function (jqXHR, textStatus, errorThrown) {
                            alert('An error has occured!! :-(')
                        }
                    })

                    return false
                })

最佳答案

尝试调整您的 @RequestMapping接受 JSON。

@RequestMapping(
    value="/save", 
    method=RequestMethod.POST, 
    consumes="application/json")

关于Spring MVC : Not able to submit form data in JSON format,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17835545/

相关文章:

java - 向 Spring OAuth2 Auth Server 添加多个客户端

java - Spring Framework 中基于 Beans Java 的配置不起作用

spring - 错误 : getWriter() has already been called for this response in springmvc

java - 如何配置 Spring 以避免设置 Pragma No-Cache

java - 如何在 Spring Boot XML 文件中注册一个 servlet?

java - Java EE 中的 Web 数据流

java - Spring 中的 PropertyEditor、Formatter 和 Converter 有什么区别?

java - Spring RestController提交文件

java - MockMvc 抛出 HttpMediaTypeNotSupportedException 状态预期为 : 201 but was 415

spring - 使用@Transactional和Spring模板有什么区别?