给出变量@Dblookup值

时间:2015-04-16 08:22:38

标签: xpages

我有以下代码:

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

@Dblookup工作正常,但我想知道是否可以给变量一个查找结果?

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

编辑:另一个问题? @DbLookup甚至会返回什么?我试图显示x [0]并仍然得到错误,所以我猜它不是一个数组。

1 个答案:

答案 0 :(得分:5)

是的,这是可能的。有一些修正案会让你更清洁。

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

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

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

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