基于此XPages adding @Formulas in dialogList,我的dialogList1
从两个串联的 View 中获取值:a
和b
。
还有另一个dialogList2
,将根据dialogList1
值是否为null来呈现,其值应如下所示:
dialogList1.value来自a => dialogList2.choices应该仅来自b
dialogList1.value来自b => dialogList2.choices应该仅来自a
我试过了:
// 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)获取值...我想我缺少了一些东西。谢谢你的时间。
最佳答案
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接口(interface)(这是OpenNTF Domino API的增强功能之一),因此点表示法不知道是否使用getItemValue(),getItemValueString(),getItemValueDateTimeArray()等。
这也是为什么作用域变量的最佳做法也是使用例如sessionScope.get(“myVar”)。当涉及到Java时,您将不能使用点表示法,而必须使用相关的方法。因此,在SSJS中以这种方式工作会养成 future 的良好习惯。
关于对话框列表项值中的xpages @IsMember函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25664578/