jsf 2组件没有name属性

时间:2012-07-15 16:18:25

标签: jsf jsf-2

在我的应用程序中点击链接后,我希望在页面加载后将焦点集中到页面的一部分。使用静态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中,为了达到此目的,我找不到名称属性。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

在JSF中,name属性是根据jsf组件的'id'属性和表单的'id'属性的组合计算的。问题的原因由BalusC here解释。因此,如果为JSF组件指定了id,则还会为其计算名称。

无论如何,开始使用<a>标签的名称属性的HTML5用法已经过时,建议使用最近容器的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" />

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

另见: