我遇到了關於類的@RequestMapping的問題。說我有兩個控制器:Spring MVC請求映射衝突
@Controller
@RequestMapping(value="/controller1")
public class Controller1 {
@RequestMapping(value="/method11.do")
public @ResponseBody method11(){
//...
}
@RequestMapping(value="/method12.do")
public ModelAndView method12(){
//This method redirects me to another jsp where I'll call Controller2 methods
return new ModelAndView("test");
}
}
@Controller
@RequestMapping(value="/controller2")
public class Controller2 {
@RequestMapping(value="/method21.do")
public @ResponseBody method21(){
//...
}
}
當我通過AJAX method11第一個呼叫,它做工精細,生成的URL是http://mydomain/myapp/controller1/method11.do
然後,我打電話method12和重定向到test.jsp的,從在那裏,我打電話給method21,而現在的問題是,產生的URL不是預期http://mydomain/myapp/controller2/method21.do
,但別的東西,這取決於如何我做AJAX調用:
url:'controller2/method21' --> http://mydomain/myapp/controller1/controller2/method21.do
url:'/controller2/method21' --> http://mydomain/controller2/method21.do
那麼,以什麼方式我應該做這些電話讓他們總是明星t在http://mydomain/myapp/...
?
我相信我可以使用url:'/myapp/controller2/method21.do'
,但我想應該有一個更通用的方法,我不必在每次調用時使用'myapp'。
這是我的web.xml:
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
在'jsp'中,您可以使用'$ {pageContext.request.contextPath}'。所以'url:'/ $ {pageContext.request.contextPath}/controller2/method21'。 – 2013-04-30 14:10:13