2014-11-04 89 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