Связывание компонентов JSF - некоторая путаница - PullRequest
6 голосов
/ 29 марта 2012

На таких веб-страницах

http://www.jsftutorials.net/components/step5.html

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

Например, вот что делается в следующем коде:

<h:inputText value="#{ myBean.someProperty}" binding="#{ myBean.somePropertyInputText}"/>

Но иногда я вижу код, подобный этому :

<h:commandButton id="t1" binding="#{foo}" value="Hello, World!" onclick="alert('I am #{id:cid(foo)}'); return false;" />

, где id:cid - это функция taglib, которая определяется следующим образом:

public static String cid(UIComponent component) {
    FacesContext context = FacesContext.getCurrentInstance();
    return component.getClientId(context);
}

В приведенном выше коде binding="#{foo}" не привязывается к «экземпляру Java компонента UI вbacking bean ".

Так в чем же смысл таких выражений, как binding="#{foo}"?

1 Ответ

10 голосов
/ 29 марта 2012

Он просто связывает компонент с текущей областью Facelet. Это особенно полезно, если вам вообще не нужно его использовать в бине. Это спасет ваш код бина от бесполезных свойств, которые вообще не использовались ни в одном другом методе. Обратите внимание, что это также работает в JSF 1.2. Не уверен насчет JSF 1.0 / 1.1, хотя он использует другой и собственный JSF EL API.

Смотри также:

...