2015-09-26 33 views
1

在我的付款輸入控件上發現問題。有一個小的計算機文本字段失敗,但不會引發錯誤。剛剛停止了整個過程。在任何情況下,刪除computedText現在它的作品。將pItem返回到自定義控件的compositeData公式仍然會經常觸發,但我無法弄清楚如何停止它。它是所有常駐內存,因此可能不是一個重大的性能損失,但仍.....將定製屬性定義爲數據對象

這個問題是一個跟進我剛纔的問題,我會盡量細化問題 defining an object property in a compositeData on a custom control

下面是我正在嘗試執行的操作: enter image description here

重複控件綁定到由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.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

我想我仍然沒有看到整個圖片,但據我所知,你重複的按鈕執行一個容器的部分刷新,其中包含重複本身和CC,而CC又有一個自定義屬性,你嘗試從內部CC改變。如果是這樣,重複,CC和一切都重新渲染,每次你按鈕重置所有不存儲在某個安全的地方,包括重複的數據源,最有可能也是你的自定義屬性到他們的默認狀態和值。 –

+0

我看到它可能導致一些額外的週期。我將分別進行刷新,這會減少重新計算的次數。將嘗試一個測試用例,看看我能減少多少次循環。我將在稍後發佈結果。 –

回答

0

保存不起作用的原因是控件上有一個計算出的文本字段,它產生了一個錯誤。問題在於客戶端和控制檯上沒有報告錯誤消息。經過大量的頭部劃傷之後,我注意到文本提交的內容不再顯示它應有的價值。刪除該字段,保存和其他一切開始工作。 關於進程被調用次數的問題,我想我已經解決了其中的許多問題。我正在將重複中的控件ccTestPaymentInput.xsp移動。它現在可以直接訪問'當前'PaymentItem對象,所以我可以訪問重複var = pItem這是我想要使用的PaymentItem對象。比我所做的更乾淨簡單。唯一需要刷新的是與rpeat控制有關的刷新,我可以做的並不多。