Ответ 1
Вы должны использовать его, если хотите иметь доступ ко всему UIComponent
, а не только к его значению. Например, для доступа к некоторым методам, которые не могут быть вызваны/связаны в представлении. На это ответили в первом вопросе, который вы нашли: Связывание компонентов JSF - некоторая путаница
Второй вопрос, который вы нашли, связывание компонентов vs findComponent() - когда использовать, что?, просто отвечает "binding
versus findComponent()
", это не отвечает "binding
versus value
" вообще, как вы, кажется, думаете. Пожалуйста, не путайте это. value
, очевидно, победит binding
.
В коде реального мира привязка компонента к поддержке bean часто используется только тогда, когда разработчику необходимо программно манипулировать своими детьми, например, component.getChildren().add(...)
. Тем не менее, bean должен быть запрошен. Более широкий охват может привести к несогласованности, поскольку экземпляры компонентов в основном создаются по принципу запроса и не должны использоваться для разных запросов. Сфера видимости также может быть, но это очень неэффективно для памяти, а для версий Mojarra старше 2.1.18 также должно быть отключено частичное сохранение состояния, иначе экземпляр bean, на который ссылается binding
, будет неявным образом воссоздаваться на каждый запрос. См. Также JSTL в JSF2 Facelets... имеет смысл? для соответствующего ответа.
Также возможно привязать компонент к "представлению". Например.
<h:someComponent binding="#{some}">
Это относится к экземпляру UIComponent
в области Facelet ( "область страницы" ). Это позволяет использовать, например, #{some.clientId}
, #{some.value}
в другом месте на той же странице. Обратите внимание, что здесь не задействована никакая поддержка bean. См. Также привязка компонентов JSF без свойства bean.
Вот некоторые инструменты для использования в реальном мире атрибута binding
:
- отключить второе текстовое поле после проверки данных через ajax первого текстового поля
- Проверьте, какая форма имеет ошибку
- Проверка ввода текста на основе раскрывающегося списка
- Как заставить проверку зависеть от нажатой кнопки?
- Как реализовать нумерацию строк в h: dataTable
- Сплит java.util.Date за два h: поля вводаText, представляющие час и минуту с f: convertDateTime