【问题标题】:Render jsf page based on path in url根据 url 中的路径渲染 jsf 页面
【发布时间】:2014-02-13 01:55:00
【问题描述】:

我有一个网址:example.com/mypage 如何根据 mypage 值制作 jsf 页面?是否有可能从 FaceletsContext 中获取它?

我认为的唯一方法是创建一个过滤器并解析 uri,但这一定是非常非常错误的:

protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException {
    String uri = request.getRequestURI();
    if (uri == null || uri.length() == 0 || uri.equals("/") || !uri.contains("/") || uri.contains("xhtml")) {
        chain.doFilter(request, response);
        return;
    }
    List<String> parts = new ArrayList<String>(Arrays.asList(uri.split("/")));
    parts.remove("");
    if (parts.size() != 1) {
        chain.doFilter(request, response);
        return;
    }
    forwardTo(request, response, "page.xhtml?value=" + parts.get(0));
}

【问题讨论】:

标签: jsf jsf-2


【解决方案1】:

由于您使用的是 JSF 2,我建议您使用 URL 重写框架(如 PrettyFaces)或工具将所有 HTTP 请求从 example.com/mypage 映射到 example.com/page.xhtml?page=mypage

你第一次尝试用ServletFilter做的事情可以通过这样的框架来完成。

一旦页面作为查询参数提供给您,您就可以使用 JSF2 viewParam functionality 将其映射到托管 bean 值:

<f:metadata>
  <f:viewParam name="page" value="#{someBean.page}" />
</f:metadata>

【讨论】:

    猜你喜欢
    • 2012-08-13
    • 1970-01-01
    • 2018-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    相关资源
    最近更新 更多