Подтвердить что ты не робот

Назначение h: outputLabel и атрибут "для"

Здесь выдержка из документации тега <h:outputLabel>:

Отображает элемент "label" HTML. Отобразить текущее значение компонент как текст ярлыка, если он указан. Если атрибут "для" указанному, найдите компонент, указанный значением "для" , атрибут и визуализировать его идентификатор клиента как значение "для" , атрибут. Если указан атрибут "styleClass", выведите его значение как значение атрибута "class".

Я запутался в атрибуте for. Какова его цель?

4b9b3361

Ответ 1

Это легче понять, если вы сначала изучите базовый HTML. JSF находится в контексте этого вопроса, а именно просто генератор кода HTML. Там отличный HTML-учебник на htmldog.com. <label>, созданный <h:outputLabel>, объясняется здесь.

HTML-тег: label

Ярлык для элемента формы (input, textarea или select).

Дополнительные атрибуты

for может использоваться для связывания метки с элементом формы, когда значение for соответствует значению атрибута элемента id.

Пример

<label for="email">Email address</label>
<input type="text" name="email" id="email" />

Таким образом, атрибут for должен указывать на id входного компонента, метка предназначена для маркировки. Метка имеет следующие преимущества SEO и удобства использования:

  • Он сообщает в тексте о связанном элементе ввода.
  • Он фокусирует и активирует связанный элемент ввода при фокусировке/нажатии на себя.

Как JSF в контексте этого вопроса просто генератор кода HTML, то же самое относится к компонентам JSF, генерирующим этот HTML.

<h:outputLabel for="email">Email address</h:outputLabel>
<h:inputText id="email" />

Поисковые роботы найдут метку и индексируют связанный элемент ввода как таковой. Экранные инструменты, используемые людьми с визуальным открытием, найдут ярлык и скажут его содержимое по звуку. Конечные пользователи могут щелкнуть метку, чтобы увидеть, как связанный вход становится сфокусированным. При нажатии на ярлык будут выбраны флажки/радиокнопки. Ввод файлов откроет диалоговое окно просмотра, щелкнув метку. Etcetera.


Следует отметить, что относительно много низкокачественных обучающих программ JSF злоупотребляют <h:outputLabel> с единственной целью распечатать некоторый текст Hello World, например:

<h:outputLabel value="#{bean.message}" />

В этом конкретном случае использования неверно. Вместо этого следует использовать <h:outputText>:

<h:outputText value="#{bean.message}" />

Или даже просто EL в тексте шаблона:

#{bean.message}

Если вы когда-либо сталкивались с таким учебником, который злоупотреблял <h:outputLabel> таким образом, он настоятельно рекомендовал прекратить его читать и перейти к более уважаемому пользователю ресурсу. Это сильное указание на то, что автор учебника ничего не знает об основном HTML, а это, в свою очередь, является довольно важной предпосылкой, прежде чем изучать JSF. Тот, кто почти ничего не знает о базовом HTML, не является хорошим учителем JSF. Вы никогда не знаете, продолжает ли такой низкокачественный учебный ресурс нисходящая спираль обучения плохой практике, и поэтому лучше перейти к другому. Вы можете найти разумные ресурсы, связанные внизу нашей страницы вики JSF и jsf.zeef.com.

Ответ 2

OutpulLabel с параметрами "for" и inputText - это правильный синтаксис, но "for" неправильно поддерживается всеми реализациями jsf. Только очень старый Sun Rave JSF правильно использует "для", чтобы показывать метки, идентификатор и стиль ошибки.