コンポーネントが見つかりません。あなた<h:inputText>
は の内部にある<h:form>
ためid
、次のパターンになります
formName:componentName
。for を指定しなかったid
ため<h:form>
、JSF が for を生成します。そのため、 formj_id1926454887_72d35e53:country
がどこにあるかが表示されます。をよりシンプルに扱いたい場合は、値を に追加する必要があります。例えばj_id1926454887_72d35e53
id
id
id
<h:form>
<h:form id="form">
<h:inputText id="country" value="#{country.localeCode}" size="20" />
</h:form>
の ID は<h:inputText>
になりますform:country
。
prependId = "false"
さらに簡単に、フォームに追加するだけです
<h:form prependId="false">
そして今、あなたid
の for<h:inputText>
は単に になりますcountry
。
このIDを動的に取得するにはどうすればよいですか?
私はあなたが望むものを達成するためにあなたのコードを少し修正するつもりです (私はあなたがinput
特定のイベントに基づいて無効にしたいと考えています)。この簡単な例を考えてみましょう
<h:form>
<h:inputText id="country" value="#{country.localeCode}" size="20" onclick="disableInputText(this.form)" />
</h:form>
ここでは、javascript 関数をHTML DOM イベントハンドラーにアタッチしています。この場合、input
クリックしたときに を無効にしたい (したがってonclick
)。form
また、関数の参照としてを渡しています。次に、次のように Javascript を定義します。
<script>
function disableInputText(form) {
form[form.id + ":country"].disabled = true;
}
</script>
オブジェクトを介してinput
対応する JavaScriptの を取得し、その属性を に設定するだけです。(オブジェクトをのように表示できます)。id
form
disabled
true
form
Map
また、以下のリンクをチェックして、より多くの属性<h:inputText>
と、使用できるさまざまなハンドラー (on
接頭辞が付いているもの) を確認してください。
inputText タグ属性。
また、ID がどのように生成されるか、および ID を決定する方法に関するその他の方法について全体像を把握するために、最も多くの票を集めた回答を確認してください。
Javascriptで使用できるようにJSFコンポーネントのIDを知るにはどうすればよいですか