【发布时间】: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));
}
【问题讨论】:
-
好吧,你必须为此使用过滤器。我想你可以看看PrettyFaces 来重写你的url
-
您使用的是什么版本的 JSF?
-
哦,我忘了提——2.0
-
您的意思是,您想要无扩展名的 URL?如果是这样,OmniFaces FacesViews 可能会有所帮助。那么这个问题就是个骗子:Customize FacesServlet <url-pattern> to get rid of .xhtml extension