2010-10-27 42 views
0

我的彈簧控制器/請求映射結構有問題。在web.xml我已經定義2周調度的servlet,映射以下請求的路徑:針對不同servlet的控制器的RequestMapping

  1. 的Servlet:/ pathA/*
  2. 的Servlet/pathB/*

所有我的控制器在包com.myproject.controllers中定義,因此兩個控制器都服務於/ pathA/*和/ pathB/*下的路徑。 我正在做我的兩個servlets的組件掃描。我如何需要設置ReuestMapping註釋以下控制器:

@Controller 
public class MyController { 

    // /pathA 
    public void action1() { 
    } 

    // /pathA/action2 
    public void action2() { 
    } 
} 

我真的感到困惑在這裏,我已經嘗試很多不同的東西,我希望你能幫幫我!

真誠, 海因裏希

回答

0

如果實際需要使用多個DispatcherServlet,最好的方法是將其控制器放入單獨的包中,並將每個servlet的組件掃描限制爲其自己的包。

如果您不能出於某種原因做它,你可以配置你的servlet如下:

<bean class = "org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> 
    <property name = "alwaysUseFullPath" value = "true" /> 
</bean> 

在這種情況下,你可以使用servlet的路徑在@RequestMapping,作爲STA的表現。

+0

啊!這正是我正在尋找的。我看到這個alwaysUseFullPath屬性已經存在於SimpleurlhandlerMapping中,但並不知道它也可以如圖所示使用。 – Erik 2010-10-27 12:50:06

0

這樣

@RequestMapping(method = RequestMethod.GET, value = "/pathA") 
@RequestMapping(method = RequestMethod.GET, value = "/pathA/bla-bla") 

嘗試SMT,如果它不會幫助有一些變種與urlrewriters。

+0

好吧,它可能有助於將我的所有servlet合併到一個帶有requestPath「/ *」的單個文件中?所以我可以給你提到的道路,它應該工作,不是嗎? – Erik 2010-10-27 06:40:51

+0

@ Heinrich:你有多少個servlet? – 2010-10-27 06:46:14

+0

目前有5個,但其中4個是Spring Dispatcher Servlets。我不確定這是否是春季的良好做法?更多。或者更少他們只是請求路徑空間 – Erik 2010-10-27 07:54:32

相關問題