【问题标题】:PrettyFaces: make all jsf pages "extension-less"PrettyFaces:使所有 jsf 页面“无扩展”
【发布时间】:2012-05-15 23:21:17
【问题描述】:

我想在那个代码里面写(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 => /admin/listusers.jsf

谢谢

【问题讨论】:

    标签: jsf-2 prettyfaces


    【解决方案1】:

    PrettyFaces 对于各种重写场景都非常强大。

    当它只涉及无扩展名的 url 时,OmniFaces 是一个有趣的替代方案。您可以通过将您的页面放在一个特殊的目录中,或者在 web.xml 中进行一些配置来获得完全没有配置的无扩展 url:

    <context-param>
        <param-name>org.omnifaces.FACES_VIEWS_SCAN_PATHS</param-name>
        <param-value>/*.xhtml</param-value>
    </context-param>
    

    请参阅package documentation 了解更多信息。

    【讨论】:

      【解决方案2】:

      为此,您有几个我能想到的选项,除非您想使用传统的 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>
      

      我希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 2012-01-06
        • 2011-12-16
        • 1970-01-01
        • 2014-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-26
        • 2021-02-01
        相关资源
        最近更新 更多