对话框列表项值中的xpages @IsMember函数

时间:2014-09-04 11:41:13

标签: xpages

根据此XPages adding @Formulas in dialogList,我的dialogList1会从两个连续的视图中获取值:ab

还有另一个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)获取值...我想我错过了什么。谢谢你的时间。

2 个答案:

答案 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"),现在,它可以运作。