我有一个关于SSJS中session.evaluate的问题。在一个关键字文档中,我存储了一些@formula,它可以对数据进行一些转换。假设这将是:
@left(fieldname;2)
如果字段名包含'hello‘,这将导致'he’。这里没什么好玩儿的。现在我想在一个xpage中使用它。
我编写了一个名为executeFormula(文档)的函数。我从xpage上的一个操作调用这个函数。此xpage包含1个备注文档数据源。函数调用是
executeFormula(datasource.getDocument(true))现在,由于某些原因,@公式从未正确计算过。在使用session.evaluate(kwFormula,doc)之前,我需要先保存文档吗?还是@公式在某些方面是错误的?
附注:我忘记提到这段代码是在customvalidator中工作的。
发布于 2012-07-17 18:21:10
如果您在自定义验证器中使用它,那么从浏览器/客户端发布的值还没有更新数据模型(在您的示例中是文档)。这发生在验证成功之后。
我想它可能适用于某些字段(例如,成功刷新后更新的字段,或现有文档中存储的字段)。
发布于 2012-07-13 05:58:46
如果看不到executeFormula(doc)函数的代码,就很难确切知道session.evaluate是如何调用的。
我建议暂时将函数从等式中删除,并创建一个简单的测试页面,其中包含文档源和包含session.evaluate的简单计算字段,以便您可以看到结果。根据上面的示例,计算得到的字段将类似于
session.evaluate("@Left(fieldname;2)",xspDoc.getDocument(true));一旦你得到了可接受的结果,你就可以将它移到你的函数中,并验证它是否也在那里工作。
不要忘记,session.evaluate返回一个向量,所以如果返回值不为空,您可能需要对返回值执行.getFirstElement()。
发布于 2012-07-13 18:22:20
实际上不需要提及文档,例如:- session.evaluate("@username")就足够了。
您的session.evaluate("@left('hello';2)")将起作用。,
https://stackoverflow.com/questions/11460949
复制相似问题