在faces-config.xml中将prettyfaces无扩展名URL保持为“to-view-Id”

时间:2013-11-15 15:39:08

标签: prettyfaces

如何让Prettyfaces在to-view-id内的faces-config.xml内创建无扩展名网址,以便它不会将.xhtml附加到其末尾?

例如在定义导航案例时,我将to-view-id定义为/topics/54233,但faces-config将我重定向到/topics/54233.xhtml,我肯定想要阻止它。我该怎么做?

我知道存在Prettyfaces导航技术,但我无法使用Prettyfaces进行导航(因为它不允许根据不同的from-view-id(s)为结果创建不同的导航案例由faces-config.xml提供)所以我宁愿用faces-config.xml

来保持这份工作

1 个答案:

答案 0 :(得分:2)

首先,由于面部导航系统的架构,您无法在faces-config.xml中使用“prettyfaces URL”。 (当face-config.xml被处理用于导航时,所有其他扩展都放弃了行动的机会。)

这意味着您需要在导航案例的to-view-id中使用原始JSF view-id网址,并且必须使用<redirect/>才能修改PrettyFaces出站URL并将其重写为漂亮的表单。

像这样的东西

<navigation-case>
    <from-outcome>from-outcome</from-outcome>
    <to-view-id>/topics/view.xhtml</to-view-id>
    <redirect>
        <view-param>
            <name>id</name>
            <value>54233</value>
        </view-param>
    </redirect>
</navigation-case>

如果您的pretty-config.xml中有适当的地图,则PrettyFaces会向/topics/54233发送重定向

<url-mapping>
    <pattern value="/topics/#{id}" />
    <view-id value="/topics/view.xhtml" />
</url-mapping>

所有这些放在一起将导致成功的重定向。但是,一般情况下,如果你要在faces-config.xml中工作,你只需假装PrettyFaces不存在,并记得使用<redirect/>