JSF组件绑定 - 有些混乱

时间:2012-03-29 16:29:23

标签: jsf binding jsf-2 components el

从像这样的网页

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

我理解JSF标记/视图组件中的绑定属性是将视图组件绑定到辅助bean中UI组件的Java实例。

,例如,在以下代码中完成的操作:

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

但有时我会看到code like this

<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}"没有绑定到“支持bean中的UI组件的Java实例”。

那么binding="#{foo}"等表达式的含义是什么?

1 个答案:

答案 0 :(得分:10)

它只是将组件绑定到当前的Facelet范围。如果你根本不需要它,那么这个特别有用。这将保护您的支持bean代码免于无用的属性,这些属性根本没有在任何其他方法中使用。请注意,它在JSF 1.2中也是这样的。不确定JSF 1.0 / 1.1,因为它使用了不同的JSF专有EL API。

另见: