首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >web过滤器中的Url重写

web过滤器中的Url重写
EN

Stack Overflow用户
提问于 2013-10-08 19:38:14
回答 1查看 199关注 0票数 0

在我的JSF应用程序中,我想实现一个web过滤器来更改所用设备函数中的请求视图(我使用spring-mobile设备解析器)。

我的过滤器里有这个:

代码语言:javascript
复制
    String requestURI = request.getRequestURI();

    Device device = DeviceUtils.getCurrentDevice(request);

    if (!requestURI.contains("/mobile") && device.isMobile()) {
        String newUri = requestURI.replace("/contextroot/faces/html/", "/contextroot/faces/html/mobile/");
        request.getRequestDispatcher(newUri).forward(request, response);
    }
    else {
        filterChain.doFilter(request, response);
    }

但我得到了一个例外

代码语言:javascript
复制
/contextroot/faces/html/mobile/consult/consult.xhtml Not Found in ExternalContext as a Resource

我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2013-10-30 18:14:32

HttpServletRequest#getRequestDispatcher()采用相对于上下文根的路径,因此不应该包含上下文根本身的路径。这在javadoc (我的重点)中有明确的规定:

...

指定的路径名可以是相对的,尽管它不能扩展到当前servlet上下文之外。如果路径以"/“开头,则解释为相对于当前上下文根。如果servlet容器不能返回RequestDispatcher,则此方法返回null

...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19246738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档