2011-11-27 137 views
2

我是Spring MVC的新手。我的问题是,@PathVariable导致404“请求的资源()不可用”。Spring @PathVariable不起作用

例如,这工作得很好URL http://localhost:8080/Spring/list

@RequestMapping(value = "/list") 
    public String list() { 
     return "WEB-INF/views/list.jsp"; 
    } 

但对于网址http://localhost:8080/Spring/list/foo

@RequestMapping(value = "/list/{nameId}") 
    public String list(@PathVariable("nameId") String nameId) { 
     return "WEB-INF/views/list.jsp"; 
    } 

什么是错的这个返回404?感谢您的回答

+0

在您的容器日志中是否有与弹簧相关的错误? – soulcheck

+0

我有Glassfish服务器和Netbeans。我在哪里可以看到日志? – zim32

+0

我收到了这样的消息[#| 2011-11-27T22:20:05.965 + 0200 | SEVERE | glassfish3.1.1 | org.apache.jasper.servlet.JspServlet | _ThreadID = 96; _ThreadName = Thread-2; | PWC6117:File “C%3A%5CUsers%5CYura%5CDocuments%5CNetBeansProjects%5CSpring%5Cbuild%5Cweb%5Clist%5CWEB-INF%5Cviews%5Clist.jsp”not found |#] – zim32

回答

1

错误消息说明了这一切。由于它是一个等级路径,因此它正在寻找/list/WEB-INF/etc...;尝试使用绝对路径来避免这个问题。

我认为这有点违反直觉。

+0

返回“/WEB-INF/views/list.jsp”;帮助,但为什么比第一个例子的作品? – zim32

+0

@ zim32我相信这是因为路径只是单层深度,所以当它解析视图路径时,它不会尝试添加前缀。 –