Xpages:动态视图面板和DominoViewCustomizer bean

时间:2015-11-05 10:26:04

标签: xpages xpages-extlib

我有动态视图面板,我使用自定义程序bean来根据列名隐藏列。但是,我需要:

  1. 了解自定义程序bean中加载了哪个视图
  2. 获取bean中的文档句柄
  3. 在bean中添加其他列
  4. 为什么我需要这个:在我的应用程序中,我正在处理文档映射。我想为映射的文档详细信息创建一个列。由于可以映射不同的文档类型,因此可以有多个列。

1 个答案:

答案 0 :(得分:2)

查看您正在使用哪个视图并生成列defs(通常与视图中的视图相同,但您可以添加其他视图)的工作是通过ViewFactory对象完成的。由#getViewFactory在定制器bean中返回。您可以看到覆盖方法并返回自定义工厂here的示例。您还可以在ExtLib here中找到默认源的另一个示例。 ViewFactory的工作是发出包含一系列ViewDef s的ColumnDef - 基本上是视图设计的抽象表示。这将涵盖1和3。

获取有关2号文档的句柄更加间接。由于定制器bean仅在视图初始化期间执行,因此它没有直接挂钩呈现每一行的过程(这是您可以获取文档的位置)。但是,您可以将属性或内容设置为方法/值绑定,这些绑定本身可以访问文档,以便它们每行执行一次。我这样做是为了让颜色列工作:我create an SSJS bindingstyle属性,然后可以看到viewEntry对象。如果您修改该代码,则可以编写一些SSJS,如#{javascript:var doc = viewEntry.getDocument(); ...other stuff here...}。如果你这样做,你应该确保要么总是使用" viewEntry"作为视图中的var名称或use panel.getVar() to find the variable name dynamically