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

解决 spring mvc3.1下post json出现HTTP Status 400 The request sent by the client was s

阅读更多

问题描述:

已声明

@RequestMapping(value="update", method = RequestMethod.POST)
    @ResponseBody
    public Map<String, Result> updateNavi(@RequestBody Navigation model)

启动日志有:

Mapped "{[/navi/update],methods=[POST],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.util.Map<java.lang.String, com.apusic.ebiz.framework.web.controller.Result> com.mm.NavigationController.updateNavi(com.mm.navigation.Navigation)

执行

$.postJSON('http://localhost:8082/mm/navi/update',{a:1})

报400错误.

image

$.postJSON('http://localhost:8082/mm/navi/update',{})

没有错.

他大爷的,之前一直使用这个方法,提交表单完全正常。见鬼了。


排错

1.控制台无任何信息,认为请求根本没有进系统,以被tomcat档住了,怀疑是web.xml,spring-mvc.xml等配置问题

但修改web.xml,spring-mvc的N多参数无果。但想想,之前都可以成功,为啥突然不成功呢,奇怪了。

2.怀疑构造的post的data不是json格式的,专门从一个能成功提交的json格式对比一下,完全一样。这下傻眼了、

3.为什么空JSON构造能成功呢?请求直接到了Controller,不知道

4.当我尝试使用

$.postJSON('http://localhost:8082/mm/navi/update',””)

它居然报错了,原来,他进了系统,返回错误给TOMCAT,所以tomcat才报错的400

果断在org.springframework.web.servlet.DispatcherServlet.doDispatch(HttpServletRequest, HttpServletResponse)打断点

果然,进来了,一步步跟,发现下面有log.debug,原来有日志的,而我的控制台没日志,郁闷,一看log4j,果然是info级别的

 


解决:

打开log4j对org.springframework.web=debug

再次请求

$.postJSON('http://localhost:8082/mm/navi/update',{a:1})

终于见到异常了

Resolving exception from handler org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Unrecognized field "a" (Class com.mm.navigation.Navigation), not marked as ignorable
at [Source: org.apache.catalina.connector.CoyoteInputStream@8f74ba; line: 1, column: 7] (through reference chain: com.apusic.mm.navigation.Navigation["a"]); nested exception is org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "a" (Class com.mm.navigation.Navigation), not marked as ignorable
at [Source: org.apache.catalina.connector.CoyoteInputStream@8f74ba; line: 1, column: 7] (through reference chain: com.apusic.mm.navigation.Navigation["a"])

之前异常都被 spring吃了,烦啊。

原来是实体Navigation里没有a的属性,转换不成功,抛出异常,却被spring转成400错误,简单丢出来了,spring厚道啊。

再次请求有的参数,

$.postJSON('http://localhost:8082/mm/navi/update',{id:1})

果然好了。

仅写此,共享之,启发一下,问题虽然简单,但有时候脑子容易短路,找不到点。

附:

$.postJSON = function(url, data, callback) {
    return jQuery.ajax({
        'type': 'POST',
        'url': url,
        'contentType': 'application/json',
        'data': JSON.stringify(data),
        'dataType': 'json',
        'success': callback
    });
};

分享到:
评论

相关推荐

    spring MVC 3.1 spring security 注解实现安全机制

    Spring MVC和Spring Security是Java开发中两个非常重要的框架,它们分别负责Web应用的MVC架构设计和安全管理。在Spring MVC 3.1版本中,它提供了更强大的注解支持,使得开发者可以更加简洁地定义控制器和处理HTTP...

    spring mvc(整合了json)

    Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的一部分,主要用于构建 MVC(Model-View-Controller)模式的 Web 应用程序。在现代 Web 开发中,JSON(JavaScript Object Notation)作为一种...

    Spring MVC 学习笔记 九 json格式的输入和输出

    例如,如果我们有一个`User`类,Spring MVC可以通过`@RequestBody`注解将JSON解析成`User`对象。 4. **JSON输出** 对于响应,我们可以返回一个对象或集合,Spring MVC会自动将其转换为JSON并设置合适的HTTP响应头...

    spring 3.1 mvc sample

    2. **Improved REST Support**:Spring 3.1增强了对RESTful Web服务的支持,通过新增的@PathVariable、@MatrixVariable、@RequestParam和@RequestHeader等注解,使得参数绑定更加灵活,更方便地处理HTTP请求的不同...

    spring3.1MVC+mybatis3.1框架集成及事务,分页使用

    在本文中,我们将深入探讨如何将Spring MVC 3.1与MyBatis 3.1框架集成,并讨论其中涉及的关键技术,如事务管理、分页和JSON数据交换。此外,我们还将简要提及开发环境中使用的工具,如Eclipse 4.3、Maven 3.0.5和...

    spring mvc拦截器过滤json中的null值

    在Spring MVC框架中,我们经常需要处理JSON数据,这些数据可能包含null值。在某些情况下,为了保持数据的整洁和避免后端处理null值时出现异常,我们需要在数据传输前过滤掉这些null值。本教程将详细介绍如何使用...

    spring MVC 对 ResponseBody返回json数据进行脱敏处理

    默认情况下,Spring MVC使用`HttpMessageConverter`来完成这个转换,其中最常用的转换器是`MappingJackson2HttpMessageConverter`,它依赖于Jackson库来序列化对象为JSON。 接下来,我们将探讨如何实现JSON数据的...

    spring_security_3.1

    7. **集成Spring MVC**:Spring Security 3.1与Spring MVC无缝集成,可以方便地保护Web控制器和视图。通过注解,如`@Secured`和`@PreAuthorize`,可以在方法级别声明安全约束。 8. **自定义逻辑**:Spring Security...

    Spring 3.1 jar包

    Spring 3.1 是Spring框架的一个重要版本,它在前一版本的基础上引入了许多新特性、增强功能和性能优化。这个jar包是Spring框架的核心组成部分,包含了许多用于构建企业级Java应用的类库和API。 首先,Spring 3.1 ...

    spring mvc json&&jackson jquery js

    Spring MVC中的`@ResponseBody`注解可以将方法的返回值直接转换为JSON格式发送到客户端,而`@RequestBody`则可以将请求体中的JSON数据解析成Java对象。 **Jackson** Jackson是Java中广泛使用的JSON库,它可以高效地...

    spring mvc生成xml或json

    在Spring MVC框架中,开发人员经常需要处理不同的数据交换格式,如XML和JSON,以便与客户端进行交互。这两种格式在Web应用中广泛用于传输数据,因为它们轻量级且易于解析。下面我们将深入探讨如何在Spring MVC中生成...

    四. Spring MVC 3 支持json及 常见错误解决

    本篇将深入探讨Spring MVC 3对JSON的支持以及解决常见错误的方法。 首先,让我们了解什么是JSON。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在...

    spring mvc 使用jquery 传json值给Controller时需要解决的问题

    总结,Spring MVC结合jQuery传递JSON数据时,需要注意JSON格式、Content-Type设置、Controller的参数绑定以及可能出现的问题及其解决策略。通过正确的配置和调试,可以确保JSON数据在前后端之间顺利传输。

    Spring3 MVC Ajax with JSON

    **Spring3 MVC与Ajax结合使用JSON** 在现代Web开发中,Spring框架的MVC模块与Ajax和JSON的集成是创建动态、响应式用户界面的关键技术。这个"Spring3 MVC Ajax with JSON"项目提供了一个Eclipse工程,包含了实现这一...

    spring3.1完整包

    这个"spring3.1完整包"包含了Spring框架的多个核心模块,下面将详细介绍这些模块及其功能。 1. **org.springframework.context-3.1.0.M1.jar**:这是Spring上下文模块,提供了容器的核心功能,包括Bean的定义、配置...

    Spring3.1搭建的springMVC框架例子

    一个简单SpringMVC例子,从请求到controller跳转再到页面显示能完整执行成功。使用myeclipse6.0搭建,使用Spring3.1部分jar包,使用jdk1.6.0_45和自带的myeclipse tomcat。

    第三章 Spring MVC Servlet API与Json的支持

    在本章中,我们将深入探讨Spring MVC框架与Servlet API以及JSON支持的相关知识。Spring MVC是Spring框架的一个核心模块,主要用于构建Web应用程序,它提供了一种优雅的方式来处理HTTP请求和响应,实现了模型-视图-...

    spring3.1源码包

    Spring 框架是Java开发领域中的一个基石,它的出现极大地简化了企业级应用的构建。Spring 3.1 版本是该框架的一个重要里程碑,它在前一个版本的基础上进行了许多改进和优化,旨在提高性能、增强可扩展性和提供更好的...

    spring mvc json学习

    总之,"Spring MVC JSON学习"涵盖了许多关键概念,包括JSON数据的序列化和反序列化、控制器中使用`@RequestBody`和`@ResponseBody`、自定义序列化逻辑以及测试JSON API。掌握这些知识点将使你能够构建出高效、健壮的...

Global site tag (gtag.js) - Google Analytics