【问题标题】:JSF page redirectJSF 页面重定向
【发布时间】:2012-07-06 18:25:48
【问题描述】:

我们在 weblogic-10.3.4 中部署了一个 JSF2.0 应用程序,我们需要给用户一个通用 url,比如 (http://web/apply?7777)。当用户访问此页面时,根据查询字符串值,用户将被重定向到客户端特定页面,该页面可以是 10 个不同页面之一。

所以一种方法是有一个 apply.jsf 页面,它有一个预渲染事件,它将根据查询字符串将用户重定向到不同的页面,

还有其他更好的方法吗?没有 apply.xhtml。

注意:在 web.xml 中,我们定义了 pageNotFound.xhtml 以防找不到页面。

【问题讨论】:

    标签: jsf-2


    【解决方案1】:

    您可以为此使用简单的servlet filter

    @WebFilter("/apply")
    public class ApplyFilter implements Filter {
    
        @Override
        public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
            HttpServletRequest request = (HttpServletRequest) req;
            HttpServletResponse response = (HttpServletResponse) res;
    
            String queryString = request.getQueryString();
            String redirectURL = determineItBasedOnQueryString(queryString);
    
            if (redirectURL != null) {
                response.sendRedirect(redirectURL);
            } else {
                response.sendError(HttpServletResponse.SC_NOT_FOUND);
            }
        }
    
        // ...
    }
    

    【讨论】:

    • 请输入this question
    • 如何从 Faces Context 访问 Managed Beans 的值以确定 servlet 过滤器中的重定向 url?
    • FacesContext 在过滤器中根本不可用。只需将它们作为所需范围的属性以低级 Servlet API 方式获取。另见stackoverflow.com/questions/2633112/… 因此,SessionBean sessionBean = (SessionBean) request.getSession().getAttribute("sessionBean"); 可以使用会话范围的 JSF 托管 bean。
    • 谢谢 Balusc..我会试试看...如果我有 servlet 2.x,我可以使用这个
    • 为什么不呢? JSF 在 Servlet API 之上运行。没有 Servlet API,JSF 甚至都无法工作。
    猜你喜欢
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多