xPages REST服务以提供Notes日历存储

时间:2018-08-07 14:41:28

标签: xpages lotus-domino

我正在尝试使用RESTservice从资源保留数据库中获取数据,并通过资源名称提供具有过滤功能的日历。 当我使用不带过滤器的其余服务时,一切运行正常

<xe:restService id="restService2" pathInfo="/inoteslegacyjson">
    <xe:this.service>
        <xe:viewJsonLegacyService count="30000"
            databaseName="${compositeData.databaseName}"
            viewName="${compositeData.viewName}" defaultColumns="false"
            var="entry" contentType="text/plain" compact="false">
            <xp:this.columns>
                <!-- Cal Date -->
                <xe:restViewColumn name="$134"
                    columnName="StartDateTime">
                </xe:restViewColumn>
                <!-- Icon -->
                <xe:restViewColumn name="$149" columnName="$149"></xe:restViewColumn>
                <!-- Start Date -->
                <xe:restViewColumn name="$144"
                    columnName="StartDateTime">
                </xe:restViewColumn>
                ...

但是当我输入这样的搜索语法时:

<xe:this.search><![CDATA[#{javascript:
var isResourceFiltered:Boolean;
var strTmp:String=viewScope.resourceName;
isResourceFiltered=(strTmp.compareToIgnoreCase("All")!=0);
print ("Is result filtered:" + isResourceFiltered + ", filter: "+ strTmp);

if (!isResourceFiltered) {
    return "";
}

return "ResourceName=" + viewScope.resourceName}]]></xe:this.search>

我在控制台中看不到任何有关Print()的消息,并且在页面中出现一些错误:

calendarDataStore:RequestError:无法加载/admin/resource.nsf/ResourceCalendarFiltered.xsp/inoteslegacyjson状态:500

或错误400

如何过滤日历视图的资源名称 (以及如何制作一个时间片以仅获取UI中显示的时间段,以避免count =“ 30000”?)

2 个答案:

答案 0 :(得分:2)

viewScope.resourceName可能设置得不够早,无法使用。这可以解释缺少打印语句以及calendarDataStore返回的错误500。

尝试添加一些错误处理,以验证这是组件问题还是代码错误。

XPages OpenLog Logger(或OpenNTF Domino API中的相应代码)将捕获未捕获的异常,因此无需try / catch块即可验证编码问题。

答案 1 :(得分:1)

我提供了Java Rest服务,并使用FT搜索在两个日期范围之间进行搜索。您也可以按资源名称在FT搜索中进行搜索。就我而言,我没有使用视图,而是使用Java进行了查找,并在代码中构建了返回的文本(以与基于Web的日历FullCalendar一起使用)。效果很好,速度很快。