JSON request with jQuery / Ajax with Spring

I am very new to JSON / Spring MVC and trying to get a simple AJAX call example for Spring MVC, but I keep returning a 400 - Bad Request error.

After cleaning the Internet, I found that this was usually caused not by setting the appropriate type of content, but [I believe] that I did.

Here is my AJAX call:

//validate the object var urlString = "/ajax/add/"; $.ajax({ type:"POST", url: urlString, contentType: "application/json; charset=utf-8", dataType: "json", data: {value1: 'apples', value2 : 'oranges'}, success: function(result){ alert("success"); }, error: function(jqXHR, textStatus, errorThrown){ alert("error:" + textStatus + " exception:" + errorThrown); } }) ; 

And my controller:

 @Controller itpublic class AddController { private static Logger m_log = null; @RequestMapping(value = "/ajax/add") public String handle(@RequestBody String json){ DummyClass dummyRequest; try { ObjectMapper mapper = new ObjectMapper(); dummyRequest = mapper.readValue(json, DummyClass.class); m_log.info("Value1: " + dummyRequest.getValue1()); m_log.info("Value2: " + dummyRequest.getValue2()); } catch (Exception e) { } finally{ } return "called"; } 

Can anyone help me out?

change

Here is my context that I use to configure Spring:

  <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:component-scan base-package="com.project.do" /> <!--<mvc:annotation-driven/> --> <bean class="com.project.do.interceptors.handler.mapping.HandlerInterceptorAnnotationAwareHandlerMapping "/> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> <bean class="com.project.do.viewresolver.ProjectViewResolver" > <property name="tilesResolver" ref="tilesResolver" /> <property name="jspResolver" ref="jspResolver" /> </bean> <bean id="tilesResolver" class ="org.springframework.web.servlet.view.UrlBasedViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView" /> <property name="order" value="2" /> </bean> <bean id="jspResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> <property name="order" value="3" /> </bean> <bean id ="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"> <property name="definitions" value="/WEB-INF/tiles/tiles.xml" /> <property name="preparerFactoryClass" value="org.springframework.web.servlet.view.tiles2.SpringBeanPreparerFactory"/> </bean> <mvc:resources mapping="/css/**" location="/css/" /> <mvc:resources mapping="/js/**" location="/js/" /> <mvc:resources mapping="/images/**" location="/images/" /> <mvc:resources mapping="/javascript/**" location="/javascript/" /> <mvc:resources mapping="/scripts/**" location="/scripts/" /> <mvc:resources mapping="/styles/**" location="/styles/" /> <mvc:resources mapping="/help/**" location="/help/" /> <!-- <mvc:view-controller path="/" view-name="welcome"/> --> 

I should note that I have a working controller with Ajax in the com.project.do.working package, but a non-working controller with Ajax and JSON is in the same com.project.do.not.working package

+5
json jquery ajax spring-mvc
source share
2 answers

I think your query matching does not have RequestMethod as a POST. In my opinion, by default it accepts a receive request, but your AJAX is a POST request. Try changing below

 @RequestMapping(value = "/ajax/add", method = RequestMethod.POST) public String handle(@RequestBody String json){ } 
+1
source share
 @Controller @RequestMapping("/employee/add.htm") public class EmployeeController { @RequestMapping(method = RequestMethod.POST) public @ResponseBody Employee add(HttpServletRequest request, HttpServletResponse response) throws Exception { } } 
0
source share

All Articles