Связывание компонентов JSF - некоторая путаница
Из веб-страниц, подобных этому,
http://www.jsftutorials.net/components/step5.html
Я понимаю, что атрибут привязки в компоненте тега/представления JSF предназначен для привязки компонента представления к экземпляру Java компонента пользовательского интерфейса в базе данных bean.
Например, что сделано в следующем коде:
<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 компонента пользовательского интерфейса в резервной копии bean".
В чем смысл выражений, таких как binding="#{foo}"
?
Ответы
Ответ 1
Он просто связывает компонент с текущей областью Facelet. Это особенно полезно, если вы вообще не нуждаетесь в поддержке bean. Это экономит ваш код bean из бесполезных свойств, которые вообще не использовались ни в одном другом методе. Обратите внимание, что это также работает в JSF 1.2. Не уверен в JSF 1.0/1.1, хотя, поскольку он использует другой API-интерфейс ELS с API JSF.
См. также: