2016-11-30 83 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