Вы видите, почему они не позволяют вам установить ID, верно? JSF берет на себя создание идентификатора, потому что вы находитесь в повторяющемся цикле компонентов и, если они позволят вам просто установить идентификатор, вы получите дублирующие идентификаторы, которые в любом случае вам не помогут.
Не зная, ПОЧЕМУ вы хотите установить идентификатор в явном виде, трудно обойти вас. Если это для JavaScript, вы можете делать то, что предлагает Грант Вагнер, и позволить JSF дать вам то, что он назвал идентификатором. Вы также можете взглянуть на сгенерированный HTML и посмотреть, в каком формате находится идентификатор. JSF обычно использует
"form_id:loop_id:loop_index:component_id"
как идентификатор, который он генерирует для компонентов в форме / повтор. Вы должны быть уверены и дать идентификаторы для вашей формы и пользовательского интерфейса: повторите теги, чтобы знать, что они были.
Хорошо, вы ответили, что хотите иметь тег h: message для определенного inputText внутри цикла, это просто.
<h:inputText id="myInput" .... />
<h:message for="myInput" ... />
Теперь сообщения, сгенерированные для ввода, будут отображаться в сообщении, и JSF будет манипулировать атрибутом «for» (хотя он не сгенерирован для HTML) так же, как и атрибут «id» в inputText, чтобы они матч.
Вы можете даже сделать свои СОБСТВЕННЫЕ сообщения в своем коде обработчика, чтобы перейти к конкретному сообщению h :, но вам нужно будет использовать вызов clientId, чтобы получить цель сообщения, учитывая компонент поддержки (а не значение). поддерживающий компонент) рассматриваемого компонента.