2012-05-27 54 views
0

处理映射的请求,我想所有的未映射请求使用Spring MVC的3 404错误页面映射和我配置web.xml和控制器的以下吧:如何在Spring MVC 3

网络。在控制器

@RequestMapping(value="/error404") 
public String get404() { 
    return "error-404.html"; 
} 

XML

<error-page> 
    <error-code>404</error-code> 
    <location>/error404</location> 
</error-page> 

请求处理假设我る在域名mydomain,如果我在未映射的请求中没有/(如http://mydomain/abc),但除此之外,我仍然得到页面error-404.html,但我失去了页面的所有样式。

所以http://mydomain/abc工作正常,但http://mydomain/abc/z没有。

有人可以帮我吗?

谢谢。

+0

我通过重定向请求到另一个请求处理解决它。执行以下操作,解决了这个问题:\t'@RequestMapping(值= “/ error404”) \t公共字符串get404(){ \t \t返回 “重定向:/ err404”; \t}' \t \t '@RequestMapping(值= “/ err404”) \t公共字符串pageNotFound(){ \t \t返回 “错误-404.html”; ''。谢谢。 – skip

+2

这是一个可怕的解决方案。你不需要重定向来做到这一点。此外,一个404错误页面应该带有一个404 HTTP错误状态代码,并且通过做你所做的事情而失去它。您可能使用相对路径代替HTML页面中的图像和CSS文件的绝对路径。向我们显示此页面的代码。 –

+0

@JBNizet:你说的没错。该页面实际上具有所有链接到css文件的链接路径以及所有相对于图像的源文件。我必须重定向的原因甚至是链接在页面上是相对的。你能提出更好的方法来处理这个问题吗?你还希望我在这里发布代码吗? – skip

回答

2

,你可以在页面中使用$ {} pageContext.request.contextPath对所有网址,包括锚标记链接.. 像:

<link href="${pageContext.request.contextPath}/style/front.css" rel="stylesheet" type="text/css" />