在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/