2012-10-30 28 views
0

映射到控制器方法不起作用。要http://localhost:8080/teleseminars/telesem_live返回404,這表明了在日誌:彈簧調度程序url模式不起作用

2012年10月30日11:37:58190 [HTTP-8086-1] [WARN] [org.springframework.web.servlet。 DispatcherServlet.noHandlerFound(DispatcherServlet.java:947)] 未發現在DispatcherServlet的與URI [/的teleseminars/telesem_live] HTTP請求帶有名稱 '調度'

任何幫助理解映射。謝謝!

這裏是控制器:

@Controller 
public class TeleseminarsController { 

    private final Logger logger = LoggerFactory.getLogger(getClass()); 

    @RequestMapping(value= "/teleseminars/{page}/{series}", method = RequestMethod.GET) ///{page}/{series} 
    public String getTele(@PathVariable("page") String page, 
      @PathVariable("series") String series, 
      HttpServletRequest request, 
      final Model model) { 

       //do stuff 

      return page; 
    } 
} 

我有這樣的web.xml上

<servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>*.do</url-pattern> 
    <url-pattern>/teleseminars/*</url-pattern> 
</servlet-mapping> 
+0

爲什麼你在'servlet-mapping'中有'* .do'映射?一個帶'/ *'的'url-pattern'應該足夠了 - 所有的請求都會被分派到Spring MVC。 – romario333

+0

謝謝,@ romario333 - 我們使用的其他方法是使用.do擴展名。這將把每個URI映射到彈簧調度器,這當然是我不能做的。我已經在過去嘗試過,它需要所有請求。所有的圖像,css,js,html等都發送到Spring ... – UpHelix

回答

0

要映射兩個新的路徑變量,因此http://localhost:8080/teleseminars/telesem_live/foo將匹配,但http://localhost:8080/teleseminars/telesem_live沒有。

+0

謝謝,但嘗試過,並得到:沒有映射找到HTTP調用與DispatcherServlet URI調用[/ teleseminars/telesem_live/SB_0] ' – UpHelix

0

,你可以請確保以下行可在您的context.xml

<context:component-scan base-package="com.yourapp.controller" /> 

在春季3或以上,你還需要啓用「自動組件掃描」(對於控制器),並聲明「視圖解決方案「手動。我以前也遇到過這個問題。

+0

謝謝。是的,我已經有了。映射到* .do工作得很好。 – UpHelix

2

servlet-mapping你吃了那部分。在您的控制器中,您可能必須將@RequestMapping更改爲@RequestMapping(value= "/{page}/{series}", method = RequestMethod.GET)。我也遇到過這個問題。