PrettyFaces:使所有jsf页面“无扩展”

时间:2012-05-07 12:43:27

标签: jsf-2 prettyfaces

我想写一下代码(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

谢谢

2 个答案:

答案 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>

我希望这会有所帮助。