Xpages使用'flags'表示不同的doc。同一个xpage上的结构

时间:2014-09-19 05:41:39

标签: xpages

我的情景:

xpage(文档内容)具有复杂的结构。我有一个第一个按钮,打开这个xpage,在postNewDocument

 Contr.replaceItemValue("txt_codformularmain","01") // I use this field as a flag. 

现在,还有另一个组成相同xpage的按钮...但在这种情况下,我确实希望xpage不同,换句话说,有一些额外的/显示的字段。

我可以在postNewDocument中添加另一个代码,如下所示:

Contr.replaceItemValue("txt_codformularmain2","01")

稍后,在某些视图中,我将通过以下两个字段过滤列出的文档:一些视图将列出txt_codformularmain = 01的文档,txt_codformularmain2 = 01的其他视图,等等。

所有字段都在同一表单元素上。 (我可以轻松创建2个不同的xpages,包含2个文档内容,但在onOpenonWebAccess设置的表单中,我只能添加一个xpage)

但是,我认为这不是最佳方法。因为在这两种情况下都会发生postNewDocument,并且这两个字段的值都为01

在经典的Lotus笔记编程中,我只使用了一个字段(标志),对于每个不同的按钮,在按钮的代码中,我只是在newDocument之前更改了字段值:01,02等等。已经成了。

我应该使用其他/更好的方法吗?

我可能会创建一个包含所需字段的新表单,并创建一个绑定到该表单的新XPage ...

1 个答案:

答案 0 :(得分:1)

dominoDocument.isNewNote()会告诉您它是否是新文档。您可以根据它计算可见性。

如果它基于字段值,则再次根据面板可见的值设置可见性 - 而不是getComponent()。getValue()使用dominoDocument.getItemValueString()假设它是文本字段为了最佳实践。在控件的onblur事件中,绑定到您要检查的字段,触发部分刷新。如果页面上有验证,则需要修改默认的部分刷新设置。

一旦您对该技术感到满意,就开始考虑使用dataContext来保存区域是否可见,并在render属性中引用该dataContext变量。这样做的好处不仅在于性能,而且还可以为dataContext提供更好的变量名称,以便在支持应用程序时使其更清晰,即可见的逻辑背后的逻辑。例如,对于支持Notes客户端应用程序的人来说,不清楚状态“01”或“02”的含义是不明确的。像“newDoc”,“已发表”等描述符在那里有优势。

另一种优化方法是使用动态内容控件。

但听起来你的XPage足够复杂而不会在这个阶段增加更多的复杂性。