4

標準のログイン ページとランディング ページがある自分のサイトのビューを設計しています。ログイン ページには onLoad 関数を呼び出したいのですが、他のページには (まだ) 呼び出しません。この挿入物を含む template.xhtml ファイルがあります。

<div id="content"> <ui:insert name="content"/> </div>

次に、 login.xhtml に次のものがあります。

<ui:define name="content"> ... </ui:define>

通常、これを login.xhtml に入れます。

<body onload="document.getElementById('login_form:name').focus();">

しかし、私は JSF の ui 構成タグを使用しているため<body/>、login.xhtml にタグを含めることができません (少なくとも、私が試みている方法では)。

私が説明した構造でこれを達成する方法はありますか? 私が考えている方法は、onLoad でテンプレート内の関数を呼び出し、ui:define を含む各ページにこの関数を設定することです。それは可能ですか?

ありがとう!

4

1 に答える 1

9

私は少なくとも2つの方法を考えることができます:

  1. でヘッダーセクションを定義し、その中<ui:define name="header">にjavascript関数(function bodyLoaded(){..})を配置します-ページごとに異なり、<body onload="bodyLoaded();">

  2. ファセットパラメータを使用します。つまり<body onload="#{onLoadJS}"/>、テンプレートの使用を含む各ページで<ui:param name="onLoadJS" value="document.getElementById(..)" />

于 2010-03-03T23:22:46.170 に答える