Что такое привязка компонентов в JSF? Когда это предпочтительно использовать?

Я прочитал о связывании компонентов с binding Атрибут в следующих вопросах:

Я понимаю, что он связывает компонент пользовательского интерфейса за тегом JSF в представлении с UIComponent собственность в бобе поддержки. Однако меня смущает, что такое использование связывания компонентов и когда мы должны его использовать. Может ли кто-нибудь объяснить это более простым способом и привести несколько практических примеров?

2 ответа

Решение

Вы должны использовать его, если вы хотите иметь доступ ко всему UIComponent а не только его значение. Например, для доступа к некоторым методам, которые нельзя вызвать / связать в представлении. Ответ на первый вопрос, который вы нашли: привязка компонента JSF - некоторая путаница

2-й вопрос, который вы нашли, связывание компонентов vs findComponent() - когда использовать который? Ответы binding против findComponent() " не отвечает " binding против value " на все, как вы, кажется, думаете. Пожалуйста, не смущайтесь этим. value очевидно, победит binding,

В реальном коде привязка компонента к компоненту поддержки часто используется только тогда, когда разработчику необходимо программно манипулировать его дочерними элементами, например: component.getChildren().add(...), Однако bean-компонент должен быть ограничен запросом. Более широкая область действия может привести к возникновению неудобств, поскольку экземпляры компонентов в основном создаются для каждого запроса и не должны совместно использоваться несколькими запросами. Область действия представления также может, но это очень неэффективно для памяти, и в версиях Mojarra, более старых, чем 2.1.18, частичное сохранение состояния также должно быть отключено, в противном случае экземпляр объекта области видимости, на который ссылается binding будет неявно воссоздан при каждом запросе. Смотрите также JSTL в JSF2 Facelets... имеет смысл? для соответствующего ответа.

Также возможно привязать компонент к "представлению". Например

<h:someComponent binding="#{some}">

Это относится к случаю UIComponent в области Facelet ("область страницы"). Это позволяет вам использовать, например, #{some.clientId}, #{some.value} в другом месте на той же странице. Обратите внимание, что здесь не используется бэк-бэк. См. Также связывание компонента JSF без свойства bean-компонента.

Вот некоторые из реальных приборов использования binding атрибут:

Прочитайте этот ответ:

В чем преимущества использования связующего атрибута в JSF?

Тем не менее, многие люди в сообществе не рекомендуют связывание. Смотрите эту статью, например:

http://drewdev.blogspot.com/2009/01/jsf-component-binding-stinks.html

Другие вопросы по тегам