给出变量@Dblookup值

Mar*_*isP 1 xpages

我有以下代码:

var x = @DbLookup("", "(category)", getComponent("model").getValue(),2);
getComponent("test").Value = x;
Run Code Online (Sandbox Code Playgroud)

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

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

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

Pau*_*ers 5

是的,这是可能的.有一些修改可以让你更清洁.

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

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

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

.Value()行失败的原因是因为那不是方法名称,而是setValue().对于一个组件上的所有属性,可以通过代码由大写第一个字母,将访问属性getset在前面,比如getValue(),setValue(),getStyleClass(),setStyleClass()如果你想使用的组件等等,SSJS编辑器有一个图书馆去电流组件,它们将它们转换为正确的Java数据类型并为您提供typeahead.