基于url中的路径呈现jsf页面
我有一个url:example.com/mypage如何根据mypage值创建jsf页面?是否有可能从FaceletsContext获得它 唯一的方法是创建一个过滤器并解析uri,但这肯定是非常错误的:基于url中的路径呈现jsf页面,jsf,jsf-2,Jsf,Jsf 2,我有一个url:example.com/mypage如何根据mypage值创建jsf页面?是否有可能从FaceletsContext获得它 唯一的方法是创建一个过滤器并解析uri,但这肯定是非常错误的: protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException {
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));
}
受保护的void doFilterInternal(HttpServletRequest请求、HttpServletResponse响应、FilterChain链)抛出ServletException、IOException{
字符串uri=request.getRequestURI();
如果(uri==null | | | uri.length()==0 | | uri.equals(“/”)| | uri.contains(“/”)| | uri.contains(“xhtml”)){
链式过滤器(请求、响应);
回来
}
List parts=newarraylist(Arrays.asList(uri.split(“/”));
部分。删除(“”);
如果(parts.size()!=1){
链式过滤器(请求、响应);
回来
}
forwardTo(请求、响应,“page.xhtml?value=“+parts.get(0));
}
由于您使用的是JSF2,我建议您使用URL重写框架(like)或工具将所有HTTP请求从example.com/mypage
映射到example.com/page.xhtml?page=mypage
您第一次尝试使用ServletFilter
所做的事情可以通过这样一个框架来完成
一旦页面作为查询参数提供给您,您就可以使用以下命令将其映射到托管bean值:
好吧,你必须使用一个过滤器。我想你可以看看你的url重写你使用的是什么版本的JSF?哦,我忘了提到-2.0你的意思是,你想要无扩展的url?如果是这样,OmniFacesView可能会有所帮助。这个问题就是一个骗局:
<f:metadata>
<f:viewParam name="page" value="#{someBean.page}" />
</f:metadata>