我有一个Spring 3.1 Web应用程序,我正在尝试发出ajax请求,但在firebug中,我可以看到我的映射未找到.我尝试了各种各样的东西,但我无法达到我的控制器方法.以下是一些细节:
我有我的web.xml:
mvc-dispatcher
org.springframework.web.servlet.DispatcherServlet
1
mvc-dispatcher
/ctrl/*
这个我在我的控制器中:
@RequestMapping(value="/ctrl/test", method = RequestMethod.GET)
public @ResponseBody String test() {
System.out.println("method test()");
return "aString";
}
我在我的dispatcher-servlet.xml中有这个:
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
/WEB-INF/pages/
.jsp
我有另一个请求映射到我的控制器中的方法,并且一个正在工作,但它不是ajax:
@RequestMapping(value="/ctrl", method = RequestMethod.GET)
public String printWelcome(ModelMap model, HttpSession session) {
initializeTree(session);
return "tree";
}
任何人都可以指出我正确的方向?
解决方法:
我总是使用基于ajax的链接作为* .action或* .ajax用于基于AJAX的请求和* .html映射用于jsp视图.然后您的调度程序Servlet应如下所示
mvc-dispatcher
org.springframework.web.servlet.DispatcherServlet
1
mvc-dispatcher
*.ajax
mvc-dispatcher
*.html
下一步:
如果您的所有ajax命令URI都以/ ctrl开头,我建议您使用以下内容:
@Controller
@RequestMapping(value="/ctrl")
public class AjaxController{
@RequestMapping(value="/test.ajax", method = RequestMethod.GET)
public String test(ModelMap model, HttpSession session) {
System.out.println("method test()");
return "test";
}
}
不要忘记将@ResponseBody注释添加到基于ajax的映射.
现在您的index.html视图控制器应该如下:
@Controller
public class ViewController{
@RequestMapping(value="/index.html", method = RequestMethod.GET)
@ResponseBody
public String test(ModelMap model, HttpSession session) {
System.out.println("method test()");
return "index";
}
}
标签:java,spring-mvc,spring
来源: https://codeday.me/bug/20190521/1145933.html