Хотя атрибут ID принимает выражения EL, он устанавливается только во время построения представления, но не во время отображения представления.Так что, если бы вы использовали тег времени построения представления, такой как JSTL <c:forEach>
, он бы работал.Но этот тег может иметь нежелательных побочных эффектов .
Я бы порекомендовал просто изменить функцию JavaScript, чтобы она больше не зависела от идентификаторов.Непонятно, какова вся ваша структура HTML dom, и если вы используете jQuery или нет, что упростит обход HTML DOM.
С простым JS вы можете, например, просто получить первую форму и затем получить первый элемент ввода:
document.forms[0].elements[0].focus();
Или вы можете захватить вводэлементы по имени тега :
document.getElementsByTagName("input")[0].focus();
Или вы можете дать им всем имя класса, например <tr:inputText styleClass="specificInput">
и , получить их по имени класса :
document.getElementsByClassName("specificInput")[0].focus();
Эти звонки являются связными.Так что, если вы знаете, что он внутри <h:form id="myForm">
, вы можете также сделать, например:
document.getElementById("myForm").getElementsByTagName("input")[0].focus();