我有一个带有方法的Java Bean,该方法返回类型为PaymentItem的对象

Payments.getItem(viewScope.vsRIndex);


此方法从ArrayList<PaymentItem>返回第n个项目

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

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


我想将ccCOMPaymentInput的dataSource设置为Payments.getItem(viewScope.vsRIndex)返回的PaymentItem

我将此代码添加到createObject

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


与var = pItem

但似乎没有创建对象pItem。
我在正确的轨道上吗?要么 ?????

最佳答案

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

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


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

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


您可能要引用的Object数据源也可以工作,但并不总是必需的。

08-28 16:31