1

データ>varプロパティがrowDataに設定されているタブ付きパネルにビューパネルがあります。このビューは、viewScope値を使用して単一カテゴリビューを模倣するように設定されています。

XPageを開いて、ビューパネルが存在するタブをクリックすると、このエラーがポップアップすることがあります(JavaScriptコードの2行目がエラーの場所です)。


Unexpected runtime error
The runtime has encountered an unexpected error.

Error source
Page Name:/speakerReq.xsp
Control Id: viewColumn2 

Exception
Error while executing JavaScript computed expression
Script interpreter error, line=2, col=23: [ReferenceError] 'rowData' not found

JavaScriptコード

1: var href = facesContext.getExternalContext().getRequest().getContextPath();
**2: var docUNID = rowData.getDocument().getUniversalID();**
3: var formName = rowData.getDocument().getItemValueString("Form");
4: var formType = rowData.getColumnValue("Form")
5: 
6: if(formName == "clientProfile") {
7:  href + "/clientProfile.xsp?documentId=" + docUNID + "&action=openDocument&rtr=yes";
8: }
9: else {
10:     href + "/speakerProfile.xsp?documentId=" + docUNID + "&action=openDocument&rtr=yes";
11: }

上で参照されているviewColumn2は、次の式を持つビューの列です。

@ReplaceSubstring(Form; "clientProfile" : "clientFeed" : "speakerProfile" : "speakerFeed"; "Client Profile" : "Client Feedback" : "Speaker Profile" : "Speaker Feedback")

上記のエラーがどのようにスローされるかはわかりません---ほとんどのXPagesでそのタブをクリックすると正常に機能します。

ビューに表示されているドキュメントは特別なものではありません。2つを比較しました。1つは表示され、もう1つはエラーをスローしますが、この問題の原因となる違いは見つかりませんでした。

エラーが表示される場合と表示されない場合がある理由を特定できません。

どんな助けでも素晴らしいでしょう!

4

3 に答える 3

3

別の変数名curRowDataを使用してみてください---大文字と小文字が区別されることを忘れないでください。また、rowData.getDocumentはリサイクルしないNotesDocumentを初期化するため、コードは大きなメモリリークになります。

使用してみてください:

var result;
if (curRowData.isCategory()) {
   return "";
}
var href = facesContext.getExternalContext().getRequest().getContextPath();
try {
   var doc = curRowData.getDocument();
   if (doc != null) {
      var docUNID = doc.getUniversalID();
      var formName = doc.getItemValueString("Form");
      var formType = curRowData.getColumnValue("Form")
          if(formName == "clientProfile") {
          result = href + "/clientProfile.xsp?documentId=" + docUNID + "&action=openDocument&rtr=yes";
      } else {
        result = href + "/speakerProfile.xsp?documentId=" + docUNID + "&action=openDocument&rtr=yes";
      }  
   }
} catch (e) {
  // some error handling
}
if (doc != null) {
   doc.recyle();
}
return result;

もちろん、ビューに必要なすべての値を追加するだけの方がよいでしょう。NotesDocumentオブジェクトを作成する必要がなくなります

于 2012-10-14T13:18:38.390 に答える
2

おそらく、このエラーは、ビューが分類されていて、コードがドキュメントではなくカテゴリにヒットした場合に発生します。次のコードを使用して、現在の行がカテゴリではないことを確認できます。

if (!rowdata.isCategory()) {
// insert your code here
}

もちろん、このコードはrowDataが使用可能であることを前提としているため、問題が解決しない可能性があります。

サンプルコードは、Notes&Dominoアプリケーション開発wikiにあります: http ://www-10.lotus.com/ldd/ddwiki.nsf/dx/notesxspviewentry_sample_javascript_code_for_xpages#isCategory+isDocument+isTotal

于 2012-09-28T04:35:39.917 に答える
0

コントロールを宣言するXMLの説明を追加してください。私自身がこのエラーを受け取りました。これは、列を間違った方法で計算したことが原因でした。「計算済み」とJavaScriptの違いは…</p>

于 2013-02-04T16:37:01.070 に答える