2

h:inputHiddenコンポーネントに動的 ID を割り当てる方法はありますか?

編集1

ui:repeat要素のコレクションを反復処理するとき に、タグ内に ID を割り当てようとしています。

4

3 に答える 3

4

の反復値に基づいて ID を設定することはできません<ui:repeat>。しかし、とにかくそれは必要ありません。デフォルトでは、反復インデックスに基づいて動的で一意の ID が既に取得されています。

例えば

<h:form id="form">
    <ui:repeat value="#{bean.list}" var="item">
        <h:inputHidden id="hidden" value="#{item.value}" />
    </ui:repeat>
</h:form>

ビューのレンダリング時にこの HTML を生成します

<form id="form" name="form">
    <input type="hidden" id="form:0:hidden" name="form:0:hidden" value="item1value" />
    <input type="hidden" id="form:1:hidden" name="form:1:hidden" value="item2value" />
    <input type="hidden" id="form:2:hidden" name="form:2:hidden" value="item3value" />
</form>

ID を手動で制御したい場合は、<c:forEach>代わりにを使用する必要があり<ui:repeat>ます。これは、複数の JSF コンポーネントを生成するのではなく、その子 (<h:inputHidden>上記の例では 1 つ) が HTML を複数回生成できるようにするためです。は、<c:forEach>複数の JSF コンポーネントを生成し、それぞれが HTML を 1 回だけ生成します (そのため<h:inputHidden>、JSF コンポーネント ツリーに複数のコンポーネントが効果的に存在することになります)。

例えば

<h:form id="form">
    <c:forEach items="#{bean.list}" var="item">
        <h:inputHidden id="#{item.id}" value="#{item.value}" />
    </c:forEach>
</h:form>

基本的に、ビューのビルド時にこの JSF コンポーネント ツリーを生成します。

<h:form id="form">
    <h:inputHidden id="item1id" value="#{bean.list[0].value}" />
    <h:inputHidden id="item2id" value="#{bean.list[1].value}" />
    <h:inputHidden id="item3id" value="#{bean.list[2].value}" />
</h:form>

これにより、ビューのレンダリング時にこの HTML が生成されます

<form id="form" name="form">
    <input type="hidden" id="form:item1id" name="form:item1id" value="item1value" />
    <input type="hidden" id="form:item2id" name="form:item2id" value="item2value" />
    <input type="hidden" id="form:item3id" name="form:item3id" value="item3value" />
</form>

以下も参照してください。

于 2012-04-25T13:27:38.387 に答える
1

デフォルトで動的 ID が割り当てられます。id="#{..}指定してカスタマイズすることもできます。

于 2012-04-25T11:44:42.343 に答える
0

任意の乱数を動的に追加することもできます ( id="#{}") が、

機能的に関連する ID を非表示のコンポーネントに追加します。これは役に立ちます

たとえば、従業員フォームの場合、empid を追加できます。

于 2012-04-25T11:59:38.217 に答える