9

JSF 複合コンポーネントに javas クリップを実装したいのですが、ID に問題があります。私のJavaスクリプト:

document.getElementById("myForm:customerId")

IDが間違っているため、機能しません。私はJSF複合コンポーネントを持っています:

<composite:implementation>
    <div id="element_customer">
        <h2 class="element_title">Customer</h2>
        <h:form id="myForm">
            <h:inputText id="customerId" value="#{cc.attrs.customerId}"/>
        </h:form>
    </div>
</composite:implementation>

HTML出力は次のとおりです。

<div id="element_customer">
    <h2 class="element_title">Customer</h2>
    <form id="j_idt44:myForm" name="j_idt44:myForm" method="post" ... >
        <input type="hidden" name="j_idt44:myForm" value="j_idt44:myForm" />
        <input id="j_idt44:myForm:customerId" ... name="j_idt44:myForm:customerId" />
    </form>
 </div>

HTML出力で「j_idt44」が使用されるのはなぜですか?

4

1 に答える 1

15

複合コンポーネントは、などNamingContainerのコンポーネントです。これにより、ID が競合することなく、同じビューに複数のコンポーネントを配置できます。<h:form><h:dataTable>

複合コンポーネントにも固定 ID を与える必要があります。例えば

<my:composite id="someId" />

<div id="#{cc.id}">の代わりに使用することもお勧めします<div id="element_customer">。すると上の例のようになりsomeIdます。


具体的な問題とは関係ありませんが、これは複合コンポーネントの完全な目的ではありません。複合コンポーネントは、同じ種類のものであることを意図してい<h:inputText>ます。タグファイルまたはおそらくインクルードファイルが必要なようです。<ui:include>、タグ ファイル、複合コンポーネント、および/またはカスタム コンポーネントを使用する場合も参照してください。

于 2012-04-27T20:00:08.820 に答える