在我的付款输入控件上发现了问题。有一个小的计算文本字段失败但没有抛出错误。刚刚停止了整个过程。在任何情况下删除computedText,它现在可以工作。将pItem返回到自定义控件的compositeData公式仍然经常触发,但我无法弄清楚如何阻止它。这是所有内存驻留,所以它可能不是一个主要的性能命中,但仍然..... ...
这个问题是我上一个问题的后续问题,我将尝试改进这个问题 defining an object property in a compositeData on a custom control
重复控件绑定到由Java方法Payments.getAllItems(LinkKey)生成的arrayList,并且可以正常工作。重复中的按钮非常简单,它只是将viewScope.vsShowPayment = true和vsRIndex设置为重复索引值,因此我知道我们正在使用的ArrayList中的哪个元素。然后刷新panelPaymentContainer,隐藏重复并呈现自定义控件ccTestPayment。 ccTestPayment有一个名为pItem的自定义属性,类型为java.lang.Object,代码如下:
<xc:ccTestPaymentInput rendered="#{javascript:(viewScope.vsShowPayment)}">
<xc:this.pItem><![CDATA[#{javascript:try{
var debug:Boolean = true;
if (debug) print("Open existing row = " + viewScope.vsRIndex)
rIndex = parseInt(viewScope.vsRIndex.toString());
if (debug) print("rIndex = " + rIndex);
pItem = Payments.getItem(rIndex);
return pItem;
}catch(e){
print("Failure in Custom Prop of add item " + e.toString());
return null;
}}]]></xc:this.pItem>
</xc:ccTestPaymentInput>
Payments Payments.getItem(rIndex)类中的方法然后从PaymentItems的ArrayList返回PaymentItem对象,并在自定义控件中显示它们。自定义控件中的字段绑定到compositeData.pItem.getPaymentDate等,到目前为止一切都很酷。
我可以编辑自定义控件上的任何字段,并且一切正常。但是,当我按下“保存”按钮时,其中没有任何代码被执行。
try{
print("Start Payment save");
var debug:Boolean = true;
var pos:Integer = parseInt(viewScope.vsRIndex.toString());
if (debug) print("Working with pos = " + pos + " Call saveThisItem");
if (Payments.saveThisItem(compositeData.pItem , pos)){
if (debug) print("save Payments Worked ");
}else{
if (debug) print("save Payments FAILED ");
}
}catch(e){
print("payment save Error " + e.tostring);
}finally{
viewScope.vsExpPayDate = null;
viewScope.vsShowPayment = false;
viewScope.remove("vsRIndex");
viewScope.remove("vsGotItem")
}
没有任何打印语句被触发。我怀疑它有关于如何定义pItem的事情。自定义属性背后的代码一次又一次地被解雇,我想知道这是否会妨碍。
答案 0 :(得分:0)
保存无效的原因是控件上有一个生成错误的计算文本字段。问题是客户端和控制台上没有报告错误消息。经过大量的头部刮擦后,我注意到文件已经不再显示它应该具有的值。删除了字段和保存,其他一切开始工作。 关于调用进程的次数问题,我想我已经解决了很多进程。我在重复内移动控件ccTestPaymentInput.xsp。它现在可以直接访问当前的&#39; PaymentItem对象,所以我可以访问teh repeat var = pItem,这是我想要使用的PaymentItem对象。干净,比我做的简单得多。唯一必要的刷新是与rpeat控制相关的,我无能为力。