2016-11-30 45 views
-1

我有我的控制器的一個問題,它沒有處理URL時,它應該是,這裏是代碼:春天沒有檢測到我@pathvariable

@RequestMapping(value = "seeRoom/{user}/{id}") 
public String getSeeMessage(@PathVariable("user") String user, @PathVariable("id") int id, Model model) { 
    System.out.println(id); 
    return "room"; 
} 

這裏是網絡。 XML:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
     version="3.1"> 
    <servlet> 
     <servlet-name>mif03</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>myApp</servlet-name> 
     <url-pattern>/backoffice</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
     <servlet-name>mif03</servlet-name> 
     <url-pattern>/users</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
     <servlet-name>myApp</servlet-name> 
     <url-pattern>/seeRoom/*</url-pattern> 
    </servlet-mapping> 

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/myApp-servlet.xml</param-value> 
    </context-param> 
</web-app> 

這裏是myApp.xml:

<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:mvc="http://www.springframework.org/schema/mvc" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd 
     http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> 

<context:component-scan base-package="controller" /> 
<context:component-scan base-package="model" /> 
<bean id="viewResolver" 
    class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <property name="viewClass" 
     value="org.springframework.web.servlet.view.JstlView" /> 
    <property name="prefix" value="/" /> 
    <property name="suffix" value=".jsp" /> 
</bean> 

和我的日食給我這個當我嘗試訪問該頁面:

WARNING: No mapping found for HTTP request with URI [/my-webapp/seeRoom/admin/0] in DispatcherServlet with name 'myApp' 

靜態處理,做工精細,但它看起來像春天沒有檢測到我@PathVariable

+0

你爲什麼認爲它應該? –

+0

[PathVariable in Spring Controller]可能的重複(http://stackoverflow.com/questions/9077831/pathvariable-in-spring-controller) – arseniyandru

+0

或者,您覺得'@ PathVariable'與警告相關嗎?收到? –

回答

0

我覺得你的映射不是正確配置。嘗試定義servlet-mappingdispatcherServlet這樣的:

<servlet-mapping> 
    <servlet-name>dispatcherServlet</servlet-name> 
    <url-pattern>/seeRoom</url-pattern> 
</servlet-mapping> 

希望它能幫助!

另請參閱:https://stackoverflow.com/a/17946825/6372139作進一步解釋。

還要確保jsp文件位於正確的位置。您的ViewResolver前綴配置爲/,但您通常想要的內容與/WEB-INF/views/類似。

最後,你可以使用方便的InternalResourceViewResolver而不是它的基類UrlBasedViewResolver。請參閱:https://stackoverflow.com/a/17453197/6372139以獲取有關此主題的更多信息。

+0

嗨,感謝您的回答,不幸的是它不起作用,當我更改<我的servlet-mapping>中的映射時,只是/ seeRoom,我甚至沒有關於unmap網址的警告並且它沒有去在我的控制器中:/ 我也嘗試做一個InternalResourceViewResolver,但它是一樣的 – Alann

+0

這很奇怪。你是否還檢查過你的視圖解析器的前綴和後綴是否適合你項目中的文件夾結構? –

+0

yup:/這就是爲什麼我在這裏發佈我的問題^^「 – Alann