JSF URL重写

时间:2014-07-02 11:27:47

标签: jsf url-rewriting

我尝试在我的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中获得用户友好的链接?

谢谢!

1 个答案:

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

另见: