h:inputHidden
コンポーネントに動的 ID を割り当てる方法はありますか?
編集1
ui:repeat
要素のコレクションを反復処理するとき に、タグ内に ID を割り当てようとしています。
h:inputHidden
コンポーネントに動的 ID を割り当てる方法はありますか?
編集1
ui:repeat
要素のコレクションを反復処理するとき に、タグ内に ID を割り当てようとしています。
の反復値に基づいて 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>
デフォルトで動的 ID が割り当てられます。id="#{..}
指定してカスタマイズすることもできます。
任意の乱数を動的に追加することもできます ( id="#{}"
) が、
機能的に関連する ID を非表示のコンポーネントに追加します。これは役に立ちます
たとえば、従業員フォームの場合、empid を追加できます。