在JSF中,我可以将Faces Servlet映射到各种URL模式。例如*.xhtml。
*.xhtml
但是我想要的是将Faces Servlet映射为 无 扩展名。意思是,如果我customers.xhtml在Web根目录中有一个页面,我想使用来请求此页面http://example.com/customers。
customers.xhtml
http://example.com/customers
我看了一个问题,如何配置不带文件扩展名的JSF URL映射?这在某种程度上是可行的,但它要求我分别映射我拥有的每个文件(如果我输入错了,请更正我)。
如何将所有.xhtml文件一次映射到Faces Servlet,而不必分别映射它们?
.xhtml
使用标准方法是不可能的。基本上,您需要自制一个映射到的servlet过滤器,/*并检查当前请求URL是否是无扩展名的URL,如果是,则RequestDispatcher#forward()对附加了文件扩展名的URL 进行调用(您知道,转发不会修改当前请求的URL)。请求网址作为重定向即可)。你还需要一个定制视图处理程序来产生所需的扩展名的网址,JSF <h:form>,<h:link>等等。
/*
RequestDispatcher#forward()
<h:form>
<h:link>
另外,您可以使用PrettyFaces或OmniFaces的FacesViews,这样就不必重新发明轮子了。在FacesViews展示页面的底部,您可以找到一些直接链接到源代码的简单链接,这可能会给您一些启发。