首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >session.evaluate和notesxspdocument

session.evaluate和notesxspdocument
EN

Stack Overflow用户
提问于 2012-07-13 05:27:29
回答 3查看 1.2K关注 0票数 0

我有一个关于SSJS中session.evaluate的问题。在一个关键字文档中,我存储了一些@formula,它可以对数据进行一些转换。假设这将是:

@left(fieldname;2)

如果字段名包含'hello‘,这将导致'he’。这里没什么好玩儿的。现在我想在一个xpage中使用它。

我编写了一个名为executeFormula(文档)的函数。我从xpage上的一个操作调用这个函数。此xpage包含1个备注文档数据源。函数调用是

代码语言:javascript
复制
executeFormula(datasource.getDocument(true))

现在,由于某些原因,@公式从未正确计算过。在使用session.evaluate(kwFormula,doc)之前,我需要先保存文档吗?还是@公式在某些方面是错误的?

附注:我忘记提到这段代码是在customvalidator中工作的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-17 18:21:10

如果您在自定义验证器中使用它,那么从浏览器/客户端发布的值还没有更新数据模型(在您的示例中是文档)。这发生在验证成功之后。

我想它可能适用于某些字段(例如,成功刷新后更新的字段,或现有文档中存储的字段)。

票数 1
EN

Stack Overflow用户

发布于 2012-07-13 05:58:46

如果看不到executeFormula(doc)函数的代码,就很难确切知道session.evaluate是如何调用的。

我建议暂时将函数从等式中删除,并创建一个简单的测试页面,其中包含文档源和包含session.evaluate的简单计算字段,以便您可以看到结果。根据上面的示例,计算得到的字段将类似于

代码语言:javascript
复制
session.evaluate("@Left(fieldname;2)",xspDoc.getDocument(true));

一旦你得到了可接受的结果,你就可以将它移到你的函数中,并验证它是否也在那里工作。

不要忘记,session.evaluate返回一个向量,所以如果返回值不为空,您可能需要对返回值执行.getFirstElement()。

票数 3
EN

Stack Overflow用户

发布于 2012-07-13 18:22:20

实际上不需要提及文档,例如:- session.evaluate("@username")就足够了。

您的session.evaluate("@left('hello';2)")将起作用。,

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11460949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档