表达式语言等效于getComponent()

时间:2014-04-03 10:31:47

标签: xpages el

我无法在java中的任何地方找到它,但是有人知道getComponent(" name")的值是什么。

1 个答案:

答案 0 :(得分:11)

无论组件绑定到什么......所以如果您的页面包含:

<xp:inputText value="#{currentDocument.subject}" />

...然后这将显示相​​同的结果:

<xp:text value="#{currentDocument.subject}" />

您还可以使用任何标准EL运算符引用该值; e.g:

<xp:label rendered="#{not(empty(currentDocument.subject))}" ...>
<xp:comboBox rendered="#{currentDocument.totalAmount gt 1000}" ...>
<xp:panel rendered="#{currentDocument.optIn eq 'Yes'}" ...>

EL也支持&#34;关联数组&#34;语法,当需要引用动态命名属性或在自定义控件外部可编辑但是需要在自定义控件中引用它们的属性时很方便。例如,如果您将dataSourcepropertyName定义为自定义控件的自定义属性,则可以从&#34;知道&#34;的上下文中传递它们。它们是什么:

<xc:dynamicLabel dataSource="currentDocument" propertyName="subject" />

...然后在自定义控件中引用它们:

<xp:label text="#{compositeData.dataSource[compositeData.propertyName]}" />

当然,所有这些都适用于XPage引擎知道如何通过EL引用的任何类型:

  • SSJS对象
  • Java地图(即范围变量)
  • DataObject的实例(标准Domino文档数据源,自定义实现等)
  • 任何有效的Java bean(遵守bean conventions

准确地说,当解释EL时,变量解析器检查它是否是前三个中的一个,如果是,则以特定于该类型的方式评估任何属性。如果它不是前三个中的一个,那么它假设它是一个bean。

总而言之,任何给定的组件都不会知道&#34;它自己的价值。如果以编程方式获取组件的句柄并调用其getValue方法,则该方法将检查其值是否为值绑定(EL,SSJS等)。如果是,则它计算该表达式并返回结果。因此,如果您在其他地方需要相同的结果,也可以在备用位置使用相同的表达式,因为它将返回相同的结果......只是不要绑定多个value属性可编辑的组件到同一个表达式;这会产生不可预测的结果。