コンポーネントが見つかりません。あなた<h:inputText>は の内部にある<h:form>ためid、次のパターンになります
formName:componentName。for を指定しなかったidため<h:form>、JSF が for を生成します。そのため、 formj_id1926454887_72d35e53:countryがどこにあるかが表示されます。をよりシンプルに扱いたい場合は、値を に追加する必要があります。例えばj_id1926454887_72d35e53ididid<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の を取得し、その属性を に設定するだけです。(オブジェクトをのように表示できます)。idformdisabledtrueformMap
また、以下のリンクをチェックして、より多くの属性<h:inputText>と、使用できるさまざまなハンドラー (on接頭辞が付いているもの) を確認してください。
inputText タグ属性。
また、ID がどのように生成されるか、および ID を決定する方法に関するその他の方法について全体像を把握するために、最も多くの票を集めた回答を確認してください。
Javascriptで使用できるようにJSFコンポーネントのIDを知るにはどうすればよいですか