给变量@Dblookup 值

Giving variable @Dblookup value

我有以下代码:

var x = @DbLookup("", "(category)", getComponent("model").getValue(),2);
getComponent("test").Value = x;

@Dblookup 工作正常,但我想知道是否可以为变量提供查找结果?

哦,是的,getComponent("test").Value = x; 给我错误。

编辑:另一个问题? @DbLookup 甚至 return 是什么?我尝试显示 x[0] 但仍然出现错误,所以我猜它不是一个数组。

是的,这是可能的。有一些修改可以使它更干净。

首先,对于@DbLookup 的第一个参数,“”是Notes 客户端开发的最佳实践,而@DbName() 是XPage 的最佳实践。如果您必须为 XPiNC 进行开发,您会发现“”在那里不起作用。

我建议添加最后一个参数 "[FAILSILENT]"。因为这是被编译为 Java 的 SSJS,你不能只使用 [FAILSILENT],你需要传递一个字符串,所以“[FAILSILENT]”。我不确定如果遇到错误,@DbLookup 在 XPages 中会做什么,但这将确保您一定会得到一个空字符串,这正是您想要的。

Tim Tripcony 总是说去数据模型,而不是组件。您的组件绑定到数据模型,并且在您的 SSJS 可以 运行 之前,该数据模型将已经更新(尽管更改未保存回 NSF 中的基础文档)。所以使用例如更容易和更清洁doc.getItemValueString("model")doc.replaceItemValueString("test").

.Value() 行失败的原因是因为那不是方法名称,而是 setValue()。对于组件上的所有属性,您可以通过代码访问 属性,方法是将第一个字母大写并在前面添加 getset,例如getValue()setValue()getStyleClass()setStyleClass() 等。如果您想使用该组件,SSJS 编辑器有一个库可以获取当前组件,该库会将它们转换为正确的 Java 数据类型并提前输入。