视图中的var如何工作 - Xpages

时间:2014-07-15 11:42:53

标签: xpages xpages-ssjs notesview

在视图中,我将所有属性中的var设置为“rowVar”。 viewColumn的代码。

if (!rowVar.getDocument().getItemValue("NAPAKA").isEmpty()) { return "NAPAKA"}
else {return rowVar.getColumnValue("STANJE")};

this.rowClasses的代码:

if (!rowVar.getDocument().getItemValue("NAPAKA").isEmpty())
{return "hoverCls napakaBlue";}
else{return "hoverCls";}

以前使用无文档进行查看,但稍后会抛出异常。为什么呢?

2 个答案:

答案 0 :(得分:3)

第一个属于视图列。因此,如果没有文档,则不会对其进行评估。

然而,每次渲染视图时都会评估第二个。因此,如果没有文档,则rowVar将不存在,并且您的代码将失败。

在您的rowClasses公式中,您可以添加以下条件:

if(requestScope.containsKey("rowVar") && ...(your conditions)...)

由于row无论如何都不会存在,因此null检查也会失败。

答案 1 :(得分:1)

Serdar的回答是正确的。这个答案只是关于效率。

如果要处理Domino View数据源中的许多文档,则应将NAPAKA列添加到Domino视图中,并避免将rowVar.getDocument()放到基础文档中,而这些文档效率不高。此外,您可以使用EL而不是SSJS来提高效率。例如:

<xp:viewColumn id="viewColumn3" value="#{(empty rowVar.NAPAKA) ? rowVar.STANJE: rowVar.NAPAKA}">
     <xp:this.facets>
        <xp:viewColumnHeader xp:key="header"
           id="viewColumnHeader3" value="column header">
        </xp:viewColumnHeader>
     </xp:this.facets>
  </xp:viewColumn>