2012-07-12 46 views
0

我有問題關於session.evaluate SSJS。在一個關鍵字文件中,我有一些@formula存儲它做了一些數據轉換。比方說,這是將是:session.evaluate和notesxspdocument

@left(fieldname;2)

如果字段名中包含「你好」,這將導致「他」。這裏沒什麼可愛的。現在我想在xpage中使用它。

我寫了一個名爲executeFormula(doc)的函數。我從xpage上的一個動作調用這個函數。這個xpage包含1個備註文檔數據源。函數調用是

executeFormula(datasource.getDocument(true)) 

現在出於某種原因,@formula從來沒有正確計算。在使用session.evaluate(kwFormula,doc)之前,我需要先保存文檔嗎?或者@formula在某種程度上是錯誤的嗎?

p.s.我忘了提及這個代碼在一個自定義驗證器中工作

回答

1

如果你在一個自定義驗證使用它,從瀏覽器/客戶端的避風港張貼的值。不更新數據模型(在你的情況下,文檔)。驗證成功後會發生這種情況。

我想它可能適用於某些領域(例如成功刷新後更新的字段或存儲在現有文檔中的字段)。

2

沒有看到executeFormula(doc)函數的代碼,很難確切知道session.evaluate是如何被調用的。

我建議從當前的equasion中取出函數,並創建一個簡單的測試頁面,其中包含文檔源代碼和一個帶有session.evaluate的簡單計算字段,以便您可以查看結果。鑑於你的例子計算字段上面會沿着

session.evaluate("@Left(fieldname;2)",xspDoc.getDocument(true)); 

線的東西一旦你獲得可接受的結果返回,那麼你可以將它移動到你的函數,並驗證它也在那裏工作。

不要忘記,session.evaluate返回一個向量,因此如果它不爲null,您可能會對返回的值執行.getFirstElement()。

+0

感謝您的評論。函數中的代碼只會從視圖中檢索關鍵字文檔並讀取值字段的內容。在這個值字段中,我存儲了前面所述的@formula。 – jjtbsomhorst 2012-07-13 04:43:00

-1

實際上不需要提及文檔,例如: - session.evaluate(「@ username」)就足夠了。

爲了您session.evaluate(「@左(‘你好’; 2)」)將工作,

+0

Ofcourse,@left('hello',2)將工作。問題是文檔特定的@formula沒有正確處理。例如:@left(fieldname; 2) – jjtbsomhorst 2012-07-13 11:44:26