2012-07-15 94 views
0

在我的应用程序单击链接后,我想在页面加载后专注于页面的一部分。使用静态html,我们可以通过下面的代码部分来完成。jsf 2组件没有名称属性

<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中我找不到甚至名称属性为了用于此目的。 任何帮助将不胜感激。

+2

您可以发布您的实际代码JSF? – 2012-07-15 17:20:48

回答

1

在JSF中,根据jsf组件的'id'属性和表单的'id'属性的组合计算name属性。其原因可以通过BalusChere来解释。因此,如果您为JSF组件指定了一个ID,那么也会为其计算名称。

总而言之,开始HTML5使用名称属性<a>标记已过时,建议使用最近的容器的id属性。所以不要依赖名称属性。

虽然你可以把注意力任何这些:

​​

或者单纯强调一个容器目标页面上是这样的:

在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" /> 

这里没有指定的结果,所以结果将是相同的页面。

参见:

+0

拉维,谢谢你的解决方案。你是对的我没有尝试h:链接。 – Mustafa 2012-07-17 10:23:02