2014-10-07 179 views
0

我正在使用Spring MVC,可以得到一些簡單的網址映射到正確的控制器,但不是與寧靜的動態網址。在我的例子中,我有一個uri/agent。這將擴展到/ agent/{name}。我已經在正是如此我的控制器映射這樣的:春天MVC休息網址不工作

public class AgentController implements Controller { 

    protected final Log logger = LogFactory.getLog(getClass()); 

    @RequestMapping(method=RequestMethod.GET, value="/agent/{name}") 
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response, @PathVariable String name) 
     throws ServletException, IOException { 

     logger.info("Returning Agent view");   
     return new ModelAndView("agent.jsp", "name", name); 
    } 

    @Override 
    public ModelAndView handleRequest(HttpServletRequest arg0, 
     HttpServletResponse arg1) throws Exception { 
     return null; 
    } 
} 

我的web.xml看起來像:

<servlet> 
    <servlet-name>Monitor</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>Monitor</servlet-name> 
    <url-pattern>/agents</url-pattern> 
</servlet-mapping> 

<servlet-mapping> 
    <servlet-name>Monitor</servlet-name> 
    <url-pattern>/agent/*</url-pattern> 
</servlet-mapping> 

<welcome-file-list> 
    <welcome-file> 
     index.jsp 
    </welcome-file> 
</welcome-file-list> 

和監控-servlet.xml中的樣子:

<bean name="/agents" class="com.activoz.monitor.web.IndexController"/> 
<bean name="/agent/*" class="com.activoz.monitor.web.AgentController"/> 

的/代理商網址工作正常,可以顯示一些數據使用休眠,但與/代理獨自我得到一個空白,在我的腦海似乎預計​​,因爲重寫null返回handleRequest在底部。然而,我想知道爲什麼/ agent/Ping或/ agent/Http沒有被映射到頂部handleRequest方法?當我試圖拉起/ Monitor/agent/Ping時出現此錯誤:

WARNING: No mapping found for HTTP request with URI [/Monitor/agent/Ping] in  DispatcherServlet with name 'Monitor' 

感謝您的任何幫助。

回答

0

您必須僅使用一個servlet映射定義。從web.xml中刪除第二個servlet映射定義,並使用@RequestMapping定義來控制URL和函數之間的關係。

+0

感謝Felipe的幫助。我在web.xml中改變了這一點,我仍然在瀏覽器中看到「請求的資源不可用」錯誤(儘管日誌中沒有任何內容對我來說很奇怪)。我的@RequestMapping是否需要更改? – Harlin 2014-10-07 21:59:49

+0

我在公共類AgentController的頂部放置了@RequestMapping(「/ agent」),並且覆蓋了handleRequest返回一個jsp頁面。如果我按照建議從web.xml中取出條目,它不起作用,但如果我將它放入,它可以正常工作。唯一仍然不起作用的是主要問題「/ agent/{name}」。有關可能的任何想法? – Harlin 2014-10-07 22:30:38