0

在我的应用程序中单击链接后,我想在页面加载后关注页面的一部分。使用静态 html,我们可以通过下面的代码部分来做到这一点。

<a href="#C4">Go to Chapter 4</a>

并定义了第 4 章;

<h2><a name="C4">Chapter 4</a></h2>
<p>This chapter explains ba bla bla</p>

在 jsf 2 中,我什至找不到用于此目的的 name 属性。任何帮助将不胜感激。

4

1 回答 1

1

在 JSF 中,name 属性是根据 jsf 组件的 'id' 属性和表单的 'id' 属性的组合来计算的。BalusC 在此处解释了其原因。因此,如果您为 JSF 组件指定一个 id,那么还会为其计算名称。

无论如何,开始 HTML5 使用<a>标签的 name 属性已过时,而是建议使用最近容器的 id 属性。所以不要依赖 name 属性。

尽管您可以尝试关注以下任何一项:

<h2 id="top4">This is a heading</h2> or

<h2><a id="top4">This is a heading</a></h2>

或者简单地将容器集中在目标页面上,如下所示:

在 HTML 4.01 中

<div id="top4">
   <h2>This is a heading</h2>
   <p>This is a paragraph</p>
</div>

在 HTML 5 中

<article id="top4">
   <h2>This is a heading</h2>
   <p>This is a paragraph</p>
</article>

现在在 JSF 中,这就是将容器聚焦在目标页面上的方式:

当结果是不同的页面但在同一个应用程序中时:

 <h:link id="link1" value="link1" outcome="welcome" fragment="top4" />

结果是welcome.xhtml,它与上下文根相关,“top4”是呈现目标页面时要聚焦的容器的ID。

链接外部站点时:

 <h:outputLink id="link2" value="http://www.msn.com/#spotlight">link2</h:outputLink>

在同一页面内:

<h:link id="link3" value="link3" fragment="top4" />

这里没有指定结果,因此结果将是同一页面。

也可以看看:

于 2012-07-15T19:08:38.133 回答