在JSF中,我可以将Faces Servlet映射到各种URL模式。例如。到*.xhtml

但是我想要的是将Faces Servlet映射到而不是扩展。意思是,如果我的Web根目录中有一个页面customers.xhtml,我想使用http://example.com/customers来请求它。

我查看了How do I configure JSF url mappings without file extensions?这个问题,并且在某种程度上可以奏效,但这需要我分别映射每个文件(如果我记错了,请更正我)。

如何将我的所有.xhtml文件一次映射到Faces Servlet,而不必分别映射它们?

最佳答案

使用标准方法是不可能的。基本上,您需要自制一个映射到/*上的servlet filter,并检查当前请求URL是否为无扩展名,如果是,则对URL附加文件扩展名执行 RequestDispatcher#forward() 调用(您知道,转发不会修改当前请求网址作为重定向即可)。您还需要一个自定义的view handler来为JSF <h:form><h:link>等生成所需的无扩展URL。

另外,您可以使用PrettyFaces或OmniFaces的FacesViews,这样就无需重新发明轮子了。在FacesViews展示页面的底部,您可以找到一些直接链接到源代码的简单链接,这可能会给您带来一些启发。

关于java - 将JSF .xhtml文件映射到无扩展名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14438068/

10-14 12:50
查看更多