1

要将值从 XPage 移交给自定义控件,应该使用哪种方法?a) 在设计时在自定义控件中定义属性。用计算值填充 XPage 的属性。在运行时通过自定义控件中的“compositeData”使用该值。或 b) 在 BeforePageLoad 事件中将值放入 XPage 的会话范围变量中。将会话范围变量绑定到自定义控件中的字段。

4

1 回答 1

11

会话范围主要用于确保值在用户在页面之间导航时保​​持不变。我喜欢将其称为“购物车”范围:如果您在 Domino 中构建了一个电子商务网站,您不会希望该网站忘记用户已将产品添加到他们的购物车只是因为他们点击返回主页页。因此,此范围对于在用户导航应用程序时记住搜索/排序/过滤选项等功能也很有用,因此每次他们导航到其他地方并返回时,它都会记住他们之前的行为,而无需将此信息永久存储在 NSF 中。

但是,对于将页面内信息从容器传递到自定义控件,compositeData绝对是要走的路。这是因为该变量仅在相关控件的处理期间使用传递的参数填充。一旦处理了该控制,所有指向传递参数的指针都会自动清除,与在每个用户会话期间存储相同信息相比,这为每个实例提供了增量可伸缩性改进。

会有重叠的情况:给定的自定义控件可能会引用适合存储在会话范围内的信息。在这种情况下,我喜欢混合使用这两种技术......例如:

<xp:inputText value="#{sessionScope[compositeData.scopeKey]}" />

上述语法允许自定义控件由其容器传递标识符,用于在会话范围内存储相关信息的位置。这提供了一些很大的灵活性,因为我可以将相同的控件放入多个上下文中,每个上下文都告诉控件它应该在范围内检索/存储哪些信息。

于 2013-07-30T16:54:12.870 回答