如何在 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 以过滤分类视图中的数据?的主要内容,如果未能解决你的问题,请参考以下文章