0

在视图中,我将所有属性中的 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";}

前者适用于没有文档的视图,但后来抛出异常。为什么?

4

2 回答 2

3

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

但是,每次呈现视图时都会评估第二个。因此,如果没有文档,rowVar 将不存在,您的代码将失败。

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

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

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

于 2014-07-15T11:58:05.477 回答
1

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

如果您正在处理 Domino 视图数据源中的许多文档,则应将 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>
于 2014-07-15T12:56:08.847 回答