Note that there are some explanatory texts on larger screens.

plurals
  1. POSpring 3, Ajax & JQuery: Why Aren't My Requests Reaching My Controller?
    primarykey
    data
    text
    <hr> <p><strong>Answer:</strong></p> <hr> <p>My Spring 3 Java webapp is "acme". I had this for my JQuery call to contact the Spring 3 Java server side components:</p> <pre><code>$.post("/test_ajax", {state:"Alaska"}); </code></pre> <p>I needed to put the "context-root" ( aka the webapp name ) in the URL:</p> <pre><code>$.post("/acme/test_ajax", {state:"Alaska"}); </code></pre> <hr> <p>I'm learning Spring 3, Ajax and JQuery. I made myself a small webapp, "<strong>acme</strong>", to learn how to connect the 3 technologies. From my logging statements it looks the handler method <strong>getAddressList()</strong> in the Controller <strong>HelloController</strong> is not getting called after the JQuery POST request.</p> <p>I started off making my JQuery call as:</p> <pre><code>$.post("/test_ajax", {state:"Alaska"}); </code></pre> <p>My code is quoted below</p> <p>Any clues would be much appreciated. Thanks in advance Steve</p> <p><strong>hello.jsp</strong></p> <pre><code>&lt;html&gt; &lt;head&gt; &lt;title&gt;ACME JSP&lt;/title&gt; &lt;script language = "JavaScript" src = "../acme/js/jquery-1.7.js"&gt;&lt;/script&gt; &lt;script language = "JavaScript"&gt; function test(){ $("#div1").replaceWith("Text Replaced With Javascript"); $.post("/test_ajax", {state:"Alaska"}); } &lt;/script&gt; &lt;/head&gt; &lt;body&gt; &lt;h1&gt;Hello.jsp: ${message}&lt;/h1&gt; &lt;div id = "div1"&gt; Original Text &lt;/div&gt; &lt;input type="submit" value="Test" onclick="test()" /&gt; &lt;/body&gt; &lt;/html&gt; </code></pre> <p><strong>HelloController.java:</strong></p> <pre><code>package com.acme.controller; import javax.annotation.Resource; import javax.servlet.http.*; import org.springframework.stereotype.Controller; import org.springframework.validation.*; import org.springframework.ui.ModelMap; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.SessionAttributes; import org.apache.log4j.Logger; @Controller public class HelloController { private static final Logger logger = Logger.getLogger(HelloController.class); @RequestMapping({"/","/hello"}) public String home(ModelMap model) { logger.debug("Started..."); model.put("message","Hello From The Spring 3.1 Controller!"); return "hello"; } @RequestMapping(value = "/test_ajax", method = RequestMethod.POST) public @ResponseBody String getAddressList( @RequestParam(required=true) String state, ModelMap model ) { logger.debug("started..."); logger.debug("State: " + state); String a_string = "Test String From Spring And Ajax!"; return a_string; } }// end class HelloController </code></pre> <p><strong>acme-servlet.xml:</strong></p> <pre><code>&lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"&gt; &lt;context:component-scan base-package="com.acme.controller" /&gt; &lt;mvc:resources mapping = "/**" location = "/"/&gt; &lt;mvc:annotation-driven/&gt; &lt;bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt; &lt;property name = "prefix" value = "/jsp/"/&gt; &lt;property name = "suffix" value = ".jsp"/&gt; &lt;/bean&gt; &lt;/beans&gt; </code></pre> <p><strong>web.xml:</strong></p> <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;web-app id="WebApp_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"&gt; &lt;display-name&gt;ACME Web Application&lt;/display-name&gt; &lt;servlet&gt; &lt;servlet-name&gt;acme&lt;/servlet-name&gt; &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt; &lt;load-on-startup&gt;1&lt;/load-on-startup&gt; &lt;/servlet&gt; &lt;servlet-mapping&gt; &lt;servlet-name&gt;acme&lt;/servlet-name&gt; &lt;url-pattern&gt;/&lt;/url-pattern&gt; &lt;/servlet-mapping&gt; &lt;!-- Help Find The Spring Config Files --&gt; &lt;listener&gt; &lt;listener-class&gt; org.springframework.web.context.ContextLoaderListener &lt;/listener-class&gt; &lt;/listener&gt; &lt;context-param&gt; &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt; &lt;param-value&gt;/WEB-INF/acme-servlet.xml&lt;/param-value&gt; &lt;/context-param&gt; &lt;/web-app&gt; </code></pre> <p><strong>pom.xml:</strong></p> <pre><code>&lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&gt; &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt; &lt;groupId&gt;com.acme&lt;/groupId&gt; &lt;artifactId&gt;acme&lt;/artifactId&gt; &lt;packaging&gt;war&lt;/packaging&gt; &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt; &lt;name&gt;ACME webapp&lt;/name&gt; &lt;url&gt;http://maven.apache.org&lt;/url&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;log4j&lt;/groupId&gt; &lt;artifactId&gt;log4j&lt;/artifactId&gt; &lt;version&gt;1.2.16&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;javax.servlet.jsp.jstl&lt;/groupId&gt; &lt;artifactId&gt;jstl-api&lt;/artifactId&gt; &lt;version&gt;1.2-rev-1&lt;/version&gt; &lt;exclusions&gt; &lt;exclusion&gt; &lt;groupId&gt;javax.servlet.jsp&lt;/groupId&gt; &lt;artifactId&gt;jsp-api&lt;/artifactId&gt; &lt;/exclusion&gt; &lt;exclusion&gt; &lt;groupId&gt;javax.servlet&lt;/groupId&gt; &lt;artifactId&gt;servlet-api&lt;/artifactId&gt; &lt;/exclusion&gt; &lt;/exclusions&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.glassfish.web&lt;/groupId&gt; &lt;artifactId&gt;jstl-impl&lt;/artifactId&gt; &lt;version&gt;1.2&lt;/version&gt; &lt;exclusions&gt; &lt;exclusion&gt; &lt;groupId&gt;javax.servlet.jsp&lt;/groupId&gt; &lt;artifactId&gt;jsp-api&lt;/artifactId&gt; &lt;/exclusion&gt; &lt;exclusion&gt; &lt;groupId&gt;javax.servlet&lt;/groupId&gt; &lt;artifactId&gt;servlet-api&lt;/artifactId&gt; &lt;/exclusion&gt; &lt;/exclusions&gt; &lt;/dependency&gt; &lt;!-- Spring 3.1.1 --&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;/groupId&gt; &lt;artifactId&gt;spring-core&lt;/artifactId&gt; &lt;version&gt;3.1.1.RELEASE&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;/groupId&gt; &lt;artifactId&gt;spring-web&lt;/artifactId&gt; &lt;version&gt;3.1.1.RELEASE&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;/groupId&gt; &lt;artifactId&gt;spring-webmvc&lt;/artifactId&gt; &lt;version&gt;3.1.1.RELEASE&lt;/version&gt; &lt;/dependency&gt; &lt;!-- Spring Security --&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.security&lt;/groupId&gt; &lt;artifactId&gt;spring-security-core&lt;/artifactId&gt; &lt;version&gt;3.1.0.RELEASE&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.security&lt;/groupId&gt; &lt;artifactId&gt;spring-security-config&lt;/artifactId&gt; &lt;version&gt;3.1.0.RELEASE&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.security&lt;/groupId&gt; &lt;artifactId&gt;spring-security-taglibs&lt;/artifactId&gt; &lt;version&gt;3.1.0.RELEASE&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.security&lt;/groupId&gt; &lt;artifactId&gt;spring-security-ldap&lt;/artifactId&gt; &lt;version&gt;3.1.0.RELEASE&lt;/version&gt; &lt;/dependency&gt; &lt;!-- Jackson JSON Mapper --&gt; &lt;dependency&gt; &lt;groupId&gt;org.codehaus.jackson&lt;/groupId&gt; &lt;artifactId&gt;jackson-mapper-asl&lt;/artifactId&gt; &lt;version&gt;1.6.4&lt;/version&gt; &lt;/dependency&gt; &lt;/dependencies&gt; &lt;build&gt; &lt;finalName&gt;acme&lt;/finalName&gt; &lt;plugins&gt; &lt;plugin&gt; &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt; &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt; &lt;version&gt;2.3.2&lt;/version&gt; &lt;configuration&gt; &lt;source&gt;1.6&lt;/source&gt; &lt;target&gt;1.6&lt;/target&gt; &lt;/configuration&gt; &lt;/plugin&gt; &lt;/plugins&gt; &lt;/build&gt; &lt;/project&gt; </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload