淘先锋技术网

首页 1 2 3 4 5 6 7

我有一个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