0

私のアプリケーションでは、リンクをクリックした後、ページの読み込み後にページの一部にフォーカスしたいと思います。static 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 を指定すると、その名前も計算されます。

とにかく、<a>タグの name 属性の 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>

HTML5 では

<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 に答える