我有一个自定义控件,带有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(?)中找不到repeat-var。所以在重复本身中,我根据if(requestScope.currPhase == 2)将value-property设置为null。该页面运行时没有错误,但现在这些字段的值不会保存......如果这是应用请求值,那么repeat-var怎么会不存在? – 2014-11-05 17:39:29
我还没有完全调查过,因为我只使用了只读组件。但我的理论是,这是关于重复控制=“假”(默认)在外部重复。如果是这样的话,组件树将只有重复中每个组件的一个实例 - 有效的一行不会绑定到任何数据。基于此,在生命周期的早期阶段,内部重复的值绑定将无法解析。这听起来似乎合理。如果我的理论是正确的,那么在外部重复(也可能是内部重复)上设置repeatControls =“true”将起作用。 – 2014-11-05 21:57:01
当然,如果您设置repeatControls =“true”,则会在页面加载时为显示的每行加载一组组件。这意味着你不能使用寻呼机,因为控件的数量和绑定不能被修改。如果你需要类似的东西,重新加载页面并使用sessionScope变量来确定重复内容的开始应该起作用。 – 2014-11-05 22:01:13