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

最初のものはビュー列に属します。したがって、ドキュメントがない場合は評価されません。

ただし、ビューがレンダリングされるたびに 2 番目のものは評価されます。したがって、ドキュメントがない場合、rowVar は存在せず、コードは失敗します。

rowClasses 式では、次のように条件を追加できます。

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

とにかく行が存在しないため、null チェックも失敗します。

于 2014-07-15T11:58:05.477 に答える
1

Serdarの答えは正しいです。この答えは効率に関するものです。

Domino ビューのデータ ソースで多くの文書を処理している場合は、NAPAKA 列を Domino ビューに追加し、基礎となる文書に対して rowVar.getDocument() を使用しないようにする必要があります。これは効率的ではありません。また、SSJS の代わりに EL を使用することで、効率を向上させることができます。例えば:

<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 に答える