J'ai une table de données simple qui contient des champs de texte de forme dynamique. Chaque champ a un ID défini dans le bean backing, donc je voulais utiliser cet identifiant pour identifier chacun des champs h: inputText.ID d'entrée JSF ignoré à l'intérieur de h: dataTable
<h:dataTable id="fieldTable" value="#{bean.indexFields}" var="item">
<h:column id="column">
<h:inputText id="#{item.id}" value="#{bean.values[item.id]}" />
</h:column>
</h:dataTable>
Lorsque je tente de voir la page JSF génère une erreur: The id attribute may not be empty
.
Si j'ajoute une constante à l'attribut ID d'entrée, cela fonctionne, mais en regardant l'ID généré ID de l'élément est non inclus:
<h:inputText id="#{item.id}abc" value="#{bean.values[item.id]}" />
Cela génère la sortie suivante:
<table id="form:fieldTable">
<tbody>
<tr>
<td><input id="form:fieldTable:0:abc" type="text" name="form:fieldTable:0:abc" title="" /></td>
</tr>
<tr>
<td><input id="form:fieldTable:1:abc" type="text" name="form:fieldTable:1:abc" title="" /></td>
</tr>
<tr>
<td><input id="form:fieldTable:2:abc" type="text" name="form:fieldTable:2:abc" title="" /></td>
</tr>
</tbody>
</table>
Existe-t-il un moyen d'inclure l'ID de l'élément itéré dans l'attribut ID d'entrée? Pourquoi l'ID est-il omis?
C'est un bon point - je ne me soucie pas nécessairement de l'ID. Je me suis heurté à cela parce que j'utilisais ui: composition pour générer un contrôle composite, contenant une étiquette suivie d'un champ de saisie de texte. L'ID spécifié sur le contrôle composite a été utilisé pour le libellé et le champ de saisie ("# {id} Label" et "# {id}" respectivement). – Travis