JSF URL 重写

use*_*755 3 jsf url-rewriting

我尝试在我的 JSF 应用程序中使用 \xe2\x80\x98rewrite\xe2\x80\x99 ( http://ocpsoft.org/rewrite/ )。

\n\n

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

\n\n
.addRule(Join.path("/profile/{pagename}-{id}/").to("/profile/{pagename}.xhtml?id={id}"))\n
Run Code Online (Sandbox Code Playgroud)\n\n

一切正常,例如,当我转到 /profile/viewpoll-101/ 时,我看到带有 id = 101 的 poll 的正确页面。所以,现在我想在 h:link jsf 元素中获取用户友好的链接。我正在尝试这个:

\n\n
<h:link outcome="/profile/viewpoll-#{poll.id}/">\n    #{poll.title}\n</h:link>\n
Run Code Online (Sandbox Code Playgroud)\n\n

但链接未激活...

\n\n

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

\n\n

谢谢!

\n

Xtr*_*ica 5

没有办法使用重写来做到这一点,只能使用 Prettyfaces。使用重写时,您必须指定 JSF 标识符。

\n
\n

PrettyFaces 附带了一个特殊的 JSF 组件,该组件简化了创建映射 URL 的链接。然而,JSF 2.0 引入了 h:link,它可以很好地创建此类链接。Rewrite 不\xe2\x80\x99t 包含任何特殊的 JSF 组件。建议使用标准 JSF 组件来呈现链接。

\n

使用 h:link 创建重写 URL 的链接非常简单。只需使用您配置为连接的 to 部分的 URL 即可获得结果。如果 URL 包含参数,请使用 f:param 设置它们的值。

\n
\n
<h:link outcome="/customer-details.jsf">\n  <f:param name="id" value="123"/>\n  Show details\n</h:link>\n
Run Code Online (Sandbox Code Playgroud)\n

JSF 2中,通过隐式导航,您可以使用它来访问/customer-details.jsp/customer-details.xhtml

\n
<h:link outcome="/customer-details">\n  <f:param name="id" value="123"/>\n  Show details\n</h:link>\n
Run Code Online (Sandbox Code Playgroud)\n

也可以看看:

\n\n