23

binding在以下问题中阅读了有关与属性的组件绑定的信息:

我知道它将视图中 JSF 标记后面的 UI 组件绑定到UIComponent支持 bean 中的属性。但是,我很困惑组件绑定的用途是什么以及何时应该使用它。有人可以用更简单的方式解释它并给出一些实际的例子吗?

4

2 回答 2

40

如果你想访问整个 UIComponent而不是仅仅访问它的值,你应该使用它。例如,访问一些无法在视图中调用/绑定的方法。这在您发现的第一个问题中得到了回答:JSF 组件绑定 - 一些混乱

您发现的第二个问题,组件绑定与 findComponent() - 何时使用哪个?,只是回答bindingfindComponent(),它根本不像你想的那样回答bindingvalue” 。请不要对此感到困惑。value显然会赢得胜利binding

在现实世界的代码中,组件绑定到支持 bean 通常仅在开发人员需要通过例如component.getChildren().add(...). 但是,该 bean 应该是请求范围的。更广泛的范围可能会导致不一致,因为组件实例基本上是在每个请求的基础上创建的,不应该在多个请求之间共享。视图范围也可以,但是这样内存效率非常低,并且在 2.1.18 之前的 Mojarra 版本上,还必须关闭部分状态保存,否则binding将在每个请求上隐式地重新创建所引用的视图范围 bean 实例。另请参阅JSF2 Facelets 中的 JSTL... 有意义吗?以获得相关答案。

也可以将组件绑定到“视图”。例如

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

这指的UIComponent是 Facelet 范围(“页面范围”)中的一个实例。例如#{some.clientId},这使您可以#{some.value}在同一页面的其他地方使用。请注意,此处不涉及支持 bean。另请参见没有 bean 属性的 JSF 组件绑定

以下是一些现实世界使用的binding属性设备:

于 2012-09-20T12:34:37.770 回答
2

阅读这个答案:

在 JSF 中使用绑定属性有什么好处?

但是,社区中很多人不建议绑定。例如看这篇文章:

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

于 2012-09-20T07:32:47.347 回答