クラスの @RequestMapping に関して問題があります。次の 2 つのコントローラーがあるとします。
@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
では、常に から始まるようにするには、どのように呼び出しを行う必要があり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>