JSF URL重写

JSF URL重写,jsf,url-rewriting,Jsf,Url Rewriting,我尝试在JSF应用程序中使用“重写”(rewrite) 一切都很好,我已经创建了规则: .addRule(Join.path("/profile/{pagename}-{id}/").to("/profile/{pagename}.xhtml?id={id}")) 一切正常,例如,当我转到/profile/viewpoll-101/时,我看到了id为101的poll的正确页面。所以,现在我想在h:linkjsf元素中获得用户友好的链接。我正在尝试这个: <h:link outcome="

我尝试在JSF应用程序中使用“重写”(rewrite)

一切都很好,我已经创建了规则:

.addRule(Join.path("/profile/{pagename}-{id}/").to("/profile/{pagename}.xhtml?id={id}"))
一切正常,例如,当我转到/profile/viewpoll-101/时,我看到了id为101的poll的正确页面。所以,现在我想在h:linkjsf元素中获得用户友好的链接。我正在尝试这个:

<h:link outcome="/profile/viewpoll-#{poll.id}/">
    #{poll.title}
</h:link>

#{poll.title}
但链接未激活

那么,如何在h:link中获得用户友好的链接呢


谢谢

只有漂亮的脸,用重写是没有办法的。使用rewrite时,必须指定JSF标识符

PrettyFaces附带了一个特殊的JSF组件,该组件简化了到映射URL的链接的创建。然而,JSF2.0引入了h:link,它可以很好地创建这样的链接。重写不包括任何特殊的JSF组件。建议使用标准JSF组件呈现链接

使用h:link创建链接以重写URL非常容易。只需使用配置为连接结果的一部分的URL。如果URL包含参数,请使用f:param设置其值


显示细节
在JSF 2中,通过隐式导航,您可以使用它访问/customer-details.jsp或/customer-details.xhtml:


显示细节
另请参见:


但是我没有通过漂亮的面孔映射这个url。我通过重写()映射这些URL,我刚刚注意到;-)根据文档更新了我的答案。如果资源名称需要为“customer-details-123”,那么customer-details.xhtml?id=123并不令人满意。您正在使用规则重写到的页面的知识,这可能会起作用,但并不好。我认为这是重写/漂亮面孔中的一个缺陷。它应该验证结果中使用的资源名称(JSF为此调用了各种插件,其中PrettyFaces应该是其中之一)
<h:link outcome="/customer-details">
  <f:param name="id" value="123"/>
  Show details
</h:link>