是否从重复中更新XPages文本值?

是否从重复中更新XPages文本值?,xpages,Xpages,我觉得我对XPages的生命周期没有什么了解。我有一个xp:text控件,其值为viewScope.count。最初,这是空的。在xp:text之后,我有一个重复,执行计算并返回一个对象数组作为其值。在repeat's value部分的末尾,我尝试用数组中的内容计数来更新xp:text: viewScope.count=myArray.length 不过,xp:text没有使用该值进行更新。这样行吗?修改viewScope.count时是否需要手动刷新xp:text?蒂亚 您应该能够使用repe

我觉得我对XPages的生命周期没有什么了解。我有一个xp:text控件,其值为viewScope.count。最初,这是空的。在xp:text之后,我有一个重复,执行计算并返回一个对象数组作为其值。在repeat's value部分的末尾,我尝试用数组中的内容计数来更新xp:text:

viewScope.count=myArray.length


不过,xp:text没有使用该值进行更新。这样行吗?修改viewScope.count时是否需要手动刷新xp:text?蒂亚

您应该能够使用repeat的索引来进行计数


后退一步,重新思考方法。在重复使用的代码内部,您更新了外部的内容

不看“它有用吗”,我会说“坏主意”。这样的副作用使维护成为一场噩梦(而且不是很MVC)

更好的方法(IMHO):

创建一个对象数据源。如果您对Java不熟悉,可以使用JSON对象。该对象将具有重复和计数器显示所需的所有属性。它是你的榜样

然后将repeat和文本字段绑定到模型,就可以了


有道理吗?

谢谢。我试图简化我的问题,但我可能简化得太多了。repeat的值实际上是第二个数组,它不是我要在文本控件中显示的数组长度。计算第一个数组并在第二个嵌套重复中使用。如果这让人困惑,很抱歉,但底线是,在这种情况下,仅使用索引是行不通的。(我有点不清楚为什么这样做有效,尽管…)仅供参考,此代码位于另一个网络上,因此我无法粘贴它。我认为我不理解这个问题,抱歉。这没关系,但我之前的评论归结为“我不能使用重复行索引”。总结一下:为什么设置绑定到xp:text的viewScope数据不改变xp:text的值,还有其他解决方案可以工作吗?不过,谢谢!如果刷新文本会发生什么。如果页面正在加载所有内容,那么它将执行重复操作,没有任何内容会告诉文本加载值。有两种方法可以在生产环境中实现这一点,但在测试中,我能看到的最简单的方法是创建一个按钮,该按钮将刷新文本,或者其中的面板将重新加载值。你可以看到这就是问题所在。是的,我认为类似的事情确实正在发生。奇怪的是,我按照你的建议做了,将文本包装在一个面板中,并添加了一个按钮,可以部分刷新该面板;当我点击它时,面板从页面上消失了!不过,在页面的另一部分中,我正在进行不同的部分刷新,此时标签确实会更新。我想问题仍然是,如何在没有按钮等用户交互的情况下更新(而不是消失)文本?显示代码!你可能会面临时间的挑战是的,我当然愿意接受有更好设计的想法!非常感谢。你的想法听起来是一个很好的设计原则。在xpage中,您建议在哪里创建对象数据源,该数据源将是xp:text和repeat的模型?我最初把它放在重复中,因为这是它主要使用的地方。(这个对象是根据页面上其他地方通过表单元素指定的一些参数构建的;它基本上是搜索的结果。)页面级别有一个类型对象数据源,与文档数据源位置相同