我有以下代码:
var x = @DbLookup("", "(category)", getComponent("model").getValue(),2);
getComponent("test").Value = x;
@Dblookup工作正常,但我想知道是否可以给变量一个查找结果?
哦,是的,getComponent("test").Value = x;
给我错误。
答案 0 :(得分:5)
是的,这是可能的。有一些修正案会让你更清洁。
首先,对于@DbLookup的第一个参数,“”是Notes客户端开发的最佳实践,但@DbName()是XPage的最佳实践。如果你必须为XPiNC开发,你会发现“”在那里不起作用。
我建议添加最终参数"[FAILSILENT]"
。因为这是编译为Java的SSJS,你不能只使用[FAILSILENT],你需要传递一个String,所以“[FAILSILENT]”。如果遇到错误,我不确定@DbLookup在XPages中做了什么,但是这将确保你肯定会得到一个空字符串,这就是你想要的。
doc.getItemValueString("model")
和doc.replaceItemValueString("test")
。
.Value()
行失败的原因是因为它不是方法名称,而是setValue()
。对于组件上的所有属性,您可以通过大写第一个字母并在前面添加get
或set
来通过代码访问该属性,例如getValue()
,setValue()
,getStyleClass()
,setStyleClass()
等。如果您想使用该组件,SSJS编辑器会有一个库来获取当前组件,这些组件会将它们转换为正确的Java数据类型并为您提供typeahead。