如何在XPage上配置xe:viewFileItemService来过滤分类视图中的数据?

时间:2015-03-19 19:22:22

标签: rest datagrid dojo xpages dojox.grid.datagrid

我有一个DocsByUsername分类视图,按用户名排序和分类。对于经过身份验证的用户,我只想在Dojo数据网格中显示其文档。网格需要支持网格编辑,所以我需要使用xe:viewFileItemService读/写服务作为网格的数据源。

我认为使用以下服务配置会相当直接......

    <xe:restService id="restService1" jsId="restServiceObj"
        pathInfo="pathinfo">
        <xe:this.service>
            <xe:viewItemFileService
                viewName="DocsByUsername" var="rsEntry"
                contentType="application/json" defaultColumns="true"
                sortColumn="Username" categoryFilter="#{sessionScope.username}">
            </xe:viewItemFileService>
        </xe:this.service>
    </xe:restService>

当我预览页面并将/ pathinfo附加到url以测试服务时,会返回以下错误...

{
   "code":500,
   "text":"Internal Error",
   "message":"",
   "type":"text",
   "data":"java.lang.NullPointerException\r\n\tat 
      ... removed for space ...

}

如果我从xe:viewFileItemService切换到xe:viewJsonService,则会正确返回数据而不会出错。

我是否可以不为xe指定分类视图:viewFileItemService?

2 个答案:

答案 0 :(得分:5)

使用参数keys代替categoryFilter。这样可以返回用户名类别的所有文档。

... keys="#{sessionScope.username}">

enter image description here

史蒂夫·扎沃基(Steve Zavocki)前一段时间对这个问题有一个blog

答案 1 :(得分:2)

保罗,我刚刚找到了数据库,这就是我所做的。尽管尝试了一切,我找不到使用keys摆脱空行的方法。

我所做的是回到categoryFilter并将此代码放入其中:

var category:String = lineItemBean.getThisUNID();
if(category == null){
    return "show nothing"
} else {
    return lineItemBean.getThisUNID();
}

lineItemBean是绑定到会话的托管bean。 getThisUNID()是存储为String的父UNID的简单getter。子记录由该UNID与父母相关联。该视图按此分类。如果它找不到父UNID,它将搜索类别&#34;什么都不显示&#34;当然它从未找到,否则返回文件。在我这样做之前,它会在这种情况下显示所有文档(非常糟糕)。

我的休息服务是xe:viewJsonService类型。仅供参考,此网格也设置为允许行编辑。此外,它不应该有所作为,但数据存储在与设计不同的数据库中。希望这会有所帮助。

相关问题