Xpages - 如果用户在getRoles()中,Dominoview将返回所有值

时间:2016-10-27 14:42:33

标签: xpages lotus-notes lotus-domino xpages-ssjs domino-designer-eclipse

以下代码过滤视图中的数据。

else语句工作正常,它基本上返回特定用户的值,但if语句是问题所在;因为我希望管理员用户能够从数据库中查看所有视图/记录。

虽然if语句有效,但它只返回第一个用户的视图/记录,但是如果用户具有角色(' [Admin]'),我希望它返回所有用户的视图。

我们将非常感谢您的帮助!

<xp:dominoView var="users" viewName="userView" keysExactMatch="true">
    <xp:this.keys><![CDATA[#{javascript:var fullName = context.getUser().getFullName();
    var users:NotesView = database.getView("userView");
    var entryCol:NotesViewEntryCollection = users.getAllEntries();
    var doc:NotesDocument = users.getFirstDocument();
    var columnValues = [];
    while(doc != null){
        columnValues.push( doc.getItemValueString("CreatedBy") );
        doc = entryCol.getNextEntry();
    }
    if(context.getUser().getRoles().contains('[Admin]')){
        print(columnValues);
        return columnValues;

     }else{
     return fullName;
     }}]]></xp:this.keys>
</xp:dominoView>

1 个答案:

答案 0 :(得分:1)

为[管理员]人员返回空值return ""。这不会设置keys属性并在视图中传递所有条目。

您的代码如下所示:

<xp:dominoView var="users" viewName="userView" keysExactMatch="true">
    <xp:this.keys><![CDATA[#{javascript:
         if(context.getUser().getRoles().contains('[Admin]')){
             return "";
         } else {
             return context.getUser().getFullName();
         }
    }]]></xp:this.keys>
</xp:dominoView>