我想写一下代码(pretty-config.xml):
<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">
<!--- ??? --->
</pretty-config>
简单地将我的所有页面映射到“.jsf / .xhtml”。
/ admin / listusers =&gt; /admin/listusers.jsf
谢谢
答案 0 :(得分:3)
PrettyFaces对于各种重写场景非常强大。
当它只涉及无扩展网址时,OmnniFaces是一个有趣的选择。通过将页面放在特殊目录中,或者在web.xml中进行一些配置,您可以拥有完全没有配置的无扩展URL:
<context-param>
<param-name>org.omnifaces.FACES_VIEWS_SCAN_PATHS</param-name>
<param-value>/*.xhtml</param-value>
</context-param>
有关详细信息,请参阅package documentation。
答案 1 :(得分:0)
为此你有几个我可以想到的选项,除非你想使用传统的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>
我希望这会有所帮助。