2014-11-04 86 views
1

我有一個自定義控件,帶有4個重複控件。一個重複控件嵌套在另一個,所以它就像這樣:XPages重複控制:變量未找到

<repeat...> 
</repeat...> 
<repeat... var="row" value="calculations..."> 
    <repeat... var="cell" value="more calculations..."> 
     <field label="cell.label"> 
     </field> 
    </repeat...> 
</repeat...> 
<repeat...> 
</repeat...> 

現在,如果我用repeatControls =假,它幾乎適用不同的是我得到的「細胞未找到」當部分刷新整個控制。當我使用repeatControls = true時,上面的計算會在重複的負載之後發生,因此不顯示任何內容。如果需要,我必須能夠對整個控件進行部分刷新。

我該如何解決這個限制?變量'cell'在哪裏?爲什麼XPages無法找到它?

感謝您的大力幫助!

更新

錯誤也保存文檔時出現。打開文檔,使用按鈕將其置於編輯模式,更改字段,然後單擊保存按鈕。不知何故,repeat-var是'not found'。

回答

2

我見過這種情況發生在部分刷新的ApplyRequestValues階段的嵌套重複控件。如果這就是你在這裏遇到的情況,可能值得確認。

一種檢查方法是使用帶有自定義錯誤頁面的XPages OpenLog Logger。這將捕獲一個堆棧軌跡,其中將包含錯誤首先發生的階段。開始「com.sun.faces.lifecycle」的行是指出當前階段的行。

如果是這樣,這是解決方案,我用http://www.intec.co.uk/dataviews-and-nested-repeats/

+0

我花了一段時間來進行設置,但相監聽工作。我發現在階段2(?)中找不到repeat-var。所以在重複本身中,我根據if(requestScope.currPhase == 2)將value-property設置爲null。該頁面運行時沒有錯誤,但現在這些字段的值不會保存......如果這是應用請求值,那麼repeat-var怎麼會不存在? – 2014-11-05 17:39:29

+0

我還沒有完全調查過,因爲我只使用了只讀組件。但我的理論是,這是關於重複控制=「假」(默認)在外部重複。如果是這樣的話,組件樹將只有重複中每個組件的一個實例 - 有效的一行不會綁定到任何數據。基於此,在生命週期的早期階段,內部重複的值綁定將無法解析。這聽起來似乎合理。如果我的理論是正確的,那麼在外部重複(也可能是內部重複)上設置repeatControls =「true」將起作用。 – 2014-11-05 21:57:01

+0

當然,如果您設置repeatControls =「true」,則會在頁面加載時爲顯示的每行加載一組組件。這意味着你不能使用尋呼機,因爲控件的數量和綁定不能被修改。如果你需要類似的東西,重新加載頁面並使用sessionScope變量來確定重複內容的開始應該起作用。 – 2014-11-05 22:01:13