如何将文档数据源发送到XPages中的自定义控件?

如何将文档数据源发送到XPages中的自定义控件?,xpages,custom-controls,el,composite,Xpages,Custom Controls,El,Composite,我使用EL将这个计算文本绑定到body字段 <xp:text escape="true" id="computedField1" value="#{doc.Body}"></xp:text> 现在我需要将这个computedField存储在一个自定义控件中并发送到文档中?我应该使用什么属性定义,以及如何将compositeData引用到cc中的Body字段 谢谢 Thomas在自定义控件上创建一个名为dataSource的自定义属性,并将类型设置为com.ibm.

我使用EL将这个计算文本绑定到body字段

 <xp:text escape="true" id="computedField1" value="#{doc.Body}"></xp:text>

现在我需要将这个computedField存储在一个自定义控件中并发送到文档中?我应该使用什么属性定义,以及如何将compositeData引用到cc中的Body字段

谢谢


Thomas

在自定义控件上创建一个名为
dataSource
的自定义属性,并将类型设置为
com.ibm.xsp.model.dataSource

创建另一个名为
computedFieldName
的自定义属性,并将其类型设置为
string

在自定义控件的“计算”字段中,设置如下值

value=“#{compositeData.dataSource[compositeData.computedFieldName]}”

使用自定义控件时,只需设置自定义属性,如:

computedFieldName=“Body”

dataSource=“#{doc}”

我可能遗漏了什么。为什么不完全跳过CC中的属性定义,继续将computed字段绑定到XPage上定义的命名数据源,只需#{doc.Body}.@PaulDella Nebbia按照我概述的方式执行,这意味着自定义控件更具可重用性。它还可以处理具有不同名称和不同数据源的字段。有一种编写方法允许自定义控件接受任何内容,而不仅仅是文档作为数据源,例如bean。我的例子被简化为堆栈溢出,真实的场景包含在许多不同的xpage中使用的文件上传控制,这些xpage具有不同的数据源名称。我发现了我在前面的评论中提到的动态绑定。请参阅Stephan Wissel的答案,了解绑定数据的更为动态的方式:那么这就非常有意义了。