根据此XPages adding @Formulas in dialogList,我的dialogList1
会从两个连续的视图中获取值:a
和b
。
还有另一个dialogList2
,根据dialogList1
值是否为空来呈现,其值应如下所示:
dialogList1.value来自a => dialogList2.choices应该只来自b
dialogList1.value来自b => dialogList2.choices应该只来自
我试过了:
// Contr.txt_particontractcv_1 - is the value binded by dialogList1
var dbname = session.getServerName() + "!!" + "mynsf.nsf";
//var a = @Unique(@DbColumn(dbname, "vwNumeCompanii", 0)).sort();
//var b = @Unique(@DbColumn(@DbName(),"vwA",0));
//return a.concat(b);
if ( @IsMember(Contr.txt_particontractcv_1,@Unique(@DbColumn(@DbName(),"vwA",0))))
{ return @Unique(@DbColumn(dbname, "vwNumeCompanii", 0)) }
else
{ return @Unique(@DbColumn(@DbName(),"vwA",0)) }
但是dialogList2只从vwA(来自b)获取值...我想我错过了什么。谢谢你的时间。
答案 0 :(得分:3)
Contr.txt_particontractcv_1
不能在SSJS中使用。点符号在LotusScript中工作,但不适用于SSJS或Java,因为Java的运行时不是专有的,并且没有以这种方式扩展。这就是为什么Contr.getItemValueString("txt_particontractcv_1")
是必需的。
某些SSJS全局变量允许使用点表示法,例如sessionScope。但这是因为它基于Map,因此sessionScope.myProperty只能映射到sessionScope.get(“myProperty”)。 Domino Document类不扩展Map接口(这是OpenNTF Domino API的增强之一),因此点符号不知道是否使用getItemValue(),getItemValueString(),getItemValueDateTimeArray()等。
这也是为什么范围变量的最佳实践也是使用例如sessionScope.get( “myVar的”)。当转移到Java时,您将无法使用点表示法,您将不得不使用相关的方法。因此,在SSJS中以这种方式工作可以培养未来的良好习惯。
答案 1 :(得分:2)
是的,我刚刚将Contr.txt_particontractcv_1
修改为Contr.getItemValueString("txt_particontractcv_1")
,现在,它可以运作。