我尝试在我的JSF应用程序中使用'rewrite'(http://ocpsoft.org/rewrite/)。
一切都很好,我创造了规则:
.addRule(Join.path("/profile/{pagename}-{id}/").to("/profile/{pagename}.xhtml?id={id}"))
一切正常,例如,当我转到/ profile / viewpoll-101 /时,我看到带有id = 101的poll的正确页面。所以,现在我想在h:link jsf元素中获得用户友好的链接。我正在尝试这个:
<h:link outcome="/profile/viewpoll-#{poll.id}/">
#{poll.title}
</h:link>
但链接不活跃......
那么,我怎样才能在h:link中获得用户友好的链接?
谢谢!
答案 0 :(得分:3)
使用重写无法做到这一点,只有使用Prettyfaces。通过重写,您必须指定JSF标识符。
PrettyFaces附带了一个特殊的JSF组件,简化了创建映射URL链接的过程。但是JSF 2.0引入了h:link,它可以很好地创建这样的链接。重写不包含任何特殊的JSF组件。建议使用标准JSF组件来渲染链接。
使用h:link创建重写URL的链接非常简单。只需使用您配置的URL作为结果的Join部分。如果URL包含参数,请使用f:param。
设置其值
<h:link outcome="/customer-details.jsf">
<f:param name="id" value="123"/>
Show details
</h:link>
在 JSF 2 中,使用隐式导航,您可以使用它来访问 /customer-details.jsp 或 /customer-details.xhtml :
<h:link outcome="/customer-details">
<f:param name="id" value="123"/>
Show details
</h:link>
另见: