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

Posted

技术标签:

【中文标题】如何在 XPage 上配置 xe:viewFileItemService 以过滤分类视图中的数据?【英文标题】:How to configure an xe:viewFileItemService on an XPage to filter the data in a categorized view? 【发布时间】:2015-05-23 01:52:02 【问题描述】:

我有一个按用户名分类的 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 指定分类视图吗?

【问题讨论】:

【参考方案1】:

Paul,我刚刚找到了那个数据库,这就是我所做的。尽管尝试了所有方法,但我找不到使用keys 摆脱空白行的方法。

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

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

lineItemBean 是绑定到会话的托管 bean。 getThisUNID() 是存储为字符串的父 UNID 的简单 getter。子记录通过此 UNID 绑定到父记录。视图按此分类。如果它找不到父 UNID,它会搜索它当然永远找不到的类别“无显示”,否则返回文档。在我这样做之前,它会显示这种情况下的所有文档(非常糟糕)。

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

【讨论】:

【参考方案2】:

使用参数keys 而不是categoryFilter。这将为您返回用户名类别的所有文档。

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

Steve Zavocki 不久前就这个问题发过blog。

【讨论】:

克努特,谢谢...我已切换到 keys="#sessionScope.username" 并且服务正在返回正确的文档而没有错误...但是,我也遇到了空白行问题Steve Zavocki 写过的博客。 保罗,我最终解决了这个问题,但老实说不记得我做了什么。从那以后我换了工作,但会尝试找到一个备份,看看我做了什么来修复它。 @Steve:听起来不错。你发现它的人也只是更新你的博客,并将这些知识永远保存下来:-D 已添加到我的周末任务列表中。我将更新我在这里和博客文章中所做的事情。 @Paul 和 Knut,我也会回答这个问题,因为评论不允许我格式化代码以便可读(我试过)

以上是关于如何在 XPage 上配置 xe:viewFileItemService 以过滤分类视图中的数据?的主要内容,如果未能解决你的问题,请参考以下文章

部分刷新触发 XPage 中的 addOnLoad 事件

XPage 和加载 JavaScript 文件

XPage系列|这次升级后终于是全自动化注册了!

Android-8-Xpage

XPage系列|是时候抛弃ButterKnife了

为什么JQuery上的对话框在XPage中不起作用