2

我想生成一个如下所示的链接:

http://domain.com/page.jsf?test=12#top

我尝试使用<h:outputLink>

<h:outputLink value="/page.jsf#top">
    <f:param name="test" value="12" />
    My link
</h:outputLink>

但它失败并产生了链接http://domain.com/page.jsf#top?test=12,这是错误的。

有没有办法使用 JSF 来做到这一点,还是我必须“手动”创建这种链接?

4

1 回答 1

4

从 JSF 2.0 开始,有一个<h:link>组件通过其outcome属性获取 JSF 导航案例结果,因此使其成为在基于 JSF 的应用程序中导航的完美候选者。您使用的组件<h:outputLink>最适合用于导航到外部世界。您当然可以使用它来处理 JSF 导航,但它会感觉很笨拙。

如果你决定切换到<h:link>你可以利用它的fragment属性来附加你的锚(总是查看文档 - 上面链接):

呈现目标页面时应聚焦的页面片段的标识符。此属性的值附加到目标 URL 的末尾,跟在井号 (#) 标记之后。此表示法是标准 URL 语法的一部分。

总而言之,您的链接应为:

<h:link value="My link" outcome="/page" fragment="top">
    <f:param name="test" value="12" />
</h:link>

它将生成您想要的 HTML。

进一步的参考点:

于 2013-10-29T12:07:35.490 回答