मेरे पास एक वसंत नियंत्रक है जिसे JQuery.post() से बुलाया जा रहा है। जब इसे नियंत्रक की विधि कहा जाता है तो उसे बुलाया जाता है और लौटाता है। लेकिन फिर, पृष्ठभूमि में, वसंत यूआरएल बदलता है और सर्वर को लाभ देता है। सर्वर 404 के साथ प्रतिक्रिया करता है।पोस्ट विधि के बाद वसंत नियंत्रक 404 पुन: प्रयास किया गया
मुझे लगता है कि यह पोस्ट विधि के संसाधित होने के बाद एक दृश्य खोजने की कोशिश कर वसंत के जवाब में है।
मैं वसंत नियंत्रक को ऐसा करने से कैसे रोकूं।
<?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:context="http://www.springframework.org/schema/context"
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">
<context:component-scan base-package="uk.co.jeeni" />
<mvc:annotation-driven />
</beans>
यहाँ मेरी web.xml फ़ाइल है:
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.ArrayList;
import java.util.List;
@Controller
@RequestMapping("/person")
public class DataController {
private List<Person> people = new ArrayList<Person>();
@RequestMapping(value="put", method = RequestMethod.POST)
public void addPerson(@ModelAttribute("person") Person person){
System.out.println(">>>>>>> person: " + person);
System.out.println(">>>>>>>>> " + person.getFirstName());
people.add(person);
}
}
यहाँ अपने आवेदन संदर्भ xml फ़ाइल है:
यहाँ मेरी स्प्रिंग नियंत्रक है
<?xml version="1.0" encoding="ISO-8859-1" ?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext-web.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/data/*</url-pattern>
</servlet-mapping>
</web-app>
यहाँ है मेरी मेरी HTML फ़ाइल से JQuery कॉल:
function attachSendDataEvent(){
$("#sendData").click(function(){
var data = "firstName=" + $("#firstName").val() + "&" +
"lastName=" + $("#lastName").val() + "&" +
"address=" + $("#address").val() + "&" +
"postcode=" + $("#postcode").val();
$.post("data/person/put",
data,
dataSentOK
);
});
return false;
}
dataSentOK
फ़ंक्शन केवल alert("DONE")
करता है।
तो जब JQuery विधि यूआरएल लागू है:
http://localhost:8080/jquery/data/person/put
और सर्वर साइड System.out.println(...)
विधि प्रिंट आउट डेटा के रूप में उम्मीद पर।
हालांकि Firebug में, सर्वर वापस भेजता है एक 404.
तो मैं वसंत के साथ प्रवेश करने पर स्विच और यह मिल गया:
[01] DispatcherServlet [DEBUG] DispatcherServlet with name 'dispatcherServlet' processing POST request for [/jquery/data/person/put]
[02] AbstractHandlerMethodMapping [DEBUG] Looking up handler method for path /person/put
[03] AbstractHandlerMethodMapping [DEBUG] Returning handler method [public void uk.co.jeeni.DataController.addPerson(uk.co.jeeni.Person)]
[04] AbstractBeanFactory [DEBUG] Returning cached instance of singleton bean 'dataController'
[05] DispatcherServlet [DEBUG] Rendering view [org.springframework.web.servlet.view.InternalResourceView: name 'person/put'; URL [person/put]] in DispatcherServlet with name 'dispatcherServlet'
[06] AbstractView [DEBUG] Added model object 'org.springframework.validation.BindingResult.person' of type [org.springframework.validation.BeanPropertyBindingResult] to request in view with name 'person/put'
[07] AbstractView [DEBUG] Added model object 'person' of type [uk.co.jeeni.Person] to request in view with name 'person/put'
[08] InternalResourceView [DEBUG] Forwarding to resource [person/put] in InternalResourceView 'person/put'
[09] DispatcherServlet [DEBUG] DispatcherServlet with name 'dispatcherServlet' processing POST request for [/jquery/data/person/person/put]
[10] AbstractHandlerMethodMapping [DEBUG] Looking up handler method for path /person/person/put
[11] AbstractHandlerMethodMapping [DEBUG] Did not find handler method for [/person/person/put]
[12] DispatcherServlet [ WARN] No mapping found for HTTP request with URI [/jquery/data/person/person/put] in DispatcherServlet with name 'dispatcherServlet'
[13] FrameworkServlet [DEBUG] Successfully completed request
[14] FrameworkServlet [DEBUG] Successfully completed request
यूआरएल पोस्ट अनुरोध के जवाब में (/ jQuery/डेटा/व्यक्ति/डाल), सही विधि पाया जाता है और लागू (लाइनों 1 से 7), लेकिन फिर लाइन 8, जो /jquery/data/person/person/put
को URL परिवर्तन पर एक InternalResourceView
को आगे वसंत, और यह नहीं पाया जा सकता है।
मैं वसंत को एक दृश्य खोजने की कोशिश करने से कैसे रोकूं। मैं बस इतना करना चाहता हूं कि वह साफ हो जाए और किया जाए।
आपकी मदद के लिए धन्यवाद।
आपकी प्रतिक्रिया के लिए धन्यवाद। जवाब @ResponseBody जोड़ने के लिए था। वसंत शून्य रिटर्न ठीक संभालता प्रतीत होता है। –
@AdamDavies इसे उत्तर के रूप में पोस्ट करें और इसे स्वीकृत –