如何将 Java 对象设置为自定义控件上的数据源

How to set a Java Object as the datasource on a custom Control

我有一个 Java Bean,其方法是 returns PaymentItem

类型的对象
Payments.getItem(viewScope.vsRIndex);

此方法 returns ArrayList<PaymentItem>

中的第 n 个项目

我的主页上有一个按钮,它在主页上的那个按钮上呈现一个自定义控件,并将 viewScope 设置为正确的索引值。

<xp:panel id="panelPaymentEntry"
    rendered="#{javascript:(viewScope.vsShowPayment) ? true : false;}">
    <xc:ccCOMPaymentInput></xc:ccCOMPaymentInput>
</xp:panel><!-- panelPaymentEntry -->

我想将 ccCOMPaymentInput 的数据源设置为 Payments.getItem(viewScope.vsRIndex)

返回的 PaymentItem

我将此代码添加到 createObject

try{
    Payments.getItem(viewScope.vsRIndex);
}catch(e){
    //do nothing
}

与 var = pItem

但似乎没有创建 Object pItem。 我在正确的轨道上吗?或者 ??????

通常,最干净的方法是在自定义控件上创建自定义 属性 以指定上下文对象 - value 是常规选择。所以你会有这样的东西:

<xc:ccCOMPaymentInput value="#{javascript:Payments.getItem(viewScope.vsRIndex)}"/>

然后,在控件中,您可以将其引用为 compositeData.value。例如:

<xp:inputText value="#{compositeData.value.someTextField}"/>

您可能指的对象数据源也可以工作,但并不总是必需的。