2009-10-09 43 views
7

ページをロードするときに入力フォーカスを特定の入力テキストコンポーネントに向ける必要があります(バーコードスキャナを使用して値を入力できるようにする必要があります)。JSF入力テキストにフォーカスを設定する

普通のHTMLでは、bodyタグにJavaScriptの "onload"ハンドラを追加しますが、JSFではより良い方法が必要です。同じコントロールがすべてのページの負荷をフォーカスを受け取る

  1. 「静的」の場合:

    何のためにこれを達成するために、「クリーン」な方法です。

  2. これは、すべてのページの読み込みで異なるコントロールになる「動的な」ケースです。

答えて

7

興味深い質問です。

これを行うには、JSFの中には何もありません。あなたは既にプレーンHTML/Javascriptでこれを行う方法を知っています。そして、JSFがそれを狂ったID以外に追加することは何も変わりません。

"静的な"アクセスの場合は、完全なJSF IDを指定するだけで済みます。 "myform:mydiv:myinput"。これは非常にきれいではありませんが、ページが変更された場合、このIDも変更される可能性があります。

<h:inputText>の中に入れたいと思うJSFコンポーネントがあれば理想的です。例:

<h:inputText value="#{whatever}"> 
    <my:focusComponent /> 
</h:inputText> 

技術的には、難しい解決策ではありません。コンポーネントはそれがIDであることを見いだし、focus()を呼び出すjavascriptを追加します。

Seamには、<s:defaultAction/>コンポーネントと同様のものがあり、Enterキーにリンクまたはボタンが応答します。そのソースコードをチェックアウトすることができます。

+0

私はあなたのダイナミックなソリューションが好きです。焦点を合わせるコントロールが場所全体を動くのであれば、いくつかの制限がありますが、私の状況では十分です。ありがとう! – Timo

+0

独自にJSF IDを割り当てても、JSF IDは狂っていません。 :-)それだけでそれを作ることはできません!補足として、Apple iDevicesは、javascriptからのウィンドウロード時に入力のフォーカスを設定しようとする試みを無視しているようです。一般的なWebブラウジングのコンテキストには意味がありますが、カスタムWebアプリケーション(特に入力用のバーコードスキャナを使用するアプリケーション)を構築しようとすると非常に苛立つことがあります。 –

関連する問題