3

クラスの @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>
4

1 に答える 1