根据url中的路径渲染jsf页面

时间:2014-01-22 19:50:18

标签: jsf jsf-2

我有一个网址: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));
}

1 个答案:

答案 0 :(得分:0)

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

您首次尝试使用ServletFilter可以通过此类框架完成。

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

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