为此,您有几个选项我可以想到,除非您想使用传统的 PrettyFaces 映射映射应用程序中的所有 URL...
您可以使用 PrettyFaces 规则,使用如下内容:
<pretty-config xmlns="http://ocpsoft.com/prettyfaces/3.3.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ocpsoft.com/prettyfaces/3.3.2
http://ocpsoft.com/xml/ns/prettyfaces/ocpsoft-pretty-faces-3.3.2.xsd">
<rewrite match="(?!.*.jsf.*)(.*)" substitute="$1.jsf" outbound="false" inbound="true"/>
<rewrite match="(.*).jsf" substitute="$1" inbound="false" outbound="true" />
</pretty-config>
但这会变得复杂,因为您实际上需要两个规则,因此您也可以为此使用http://ocpsoft.org/rewrite/,并且事情会更简单且更具声明性:
ConfigurationBuilder.begin()
.addRule(Join.path("/{p}").to("/{p.jsf}").where("p").matches("(?!*.jsf).*"));
传统的 PrettyFaces 方法是使用配置中的 url-mapping 声明将 URL 映射到每个页面:
<pretty-config xmlns="http://ocpsoft.com/prettyfaces/3.3.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ocpsoft.com/prettyfaces/3.3.2
http://ocpsoft.com/xml/ns/prettyfaces/ocpsoft-pretty-faces-3.3.2.xsd">
<url-mapping id="listUsers">
<pattern value="/admin/listusers"/>
<view-id value="/admin/listusers.jsf" />
</url-mapping>
<url-mapping id="login">
<pattern value="/login"/>
<view-id value="/login.jsf" />
</url-mapping>
</pretty-config>
我希望这有帮助。