XPages扩展库和对象数据源的使用 [英] XPages Extensions library and Object Data Source usage

查看:13
本文介绍了XPages扩展库和对象数据源的使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

包含在扩展库(Domino9中的默认值)中有一个"对象数据源"特性。这是一件非常方便的事情,但是我找不到任何关于这方面的文件。我有一个关于"Ignore reRequestParams"属性的问题.这意味着什么,以及如何使用这一点?启用此功能后,是否可以将URL参数自动绑定到数据源对象属性?

推荐答案

最初的两个数据源(Domino document和Domino View)都支持允许URL查询字符串参数覆盖属性值的行为。例如,默认情况下,文档数据源在查询字符串中查找databaseNameformNamedocumentId;对于它找到的任何这些内容,无论该属性在XSP标记中分配了什么值,都会将相应的属性设置为参数值。

此行为可以通过两种方式进行自定义:

  1. 如果为requestParamPrefix属性提供了一个非空字符串值,则每个 属性将仅在URL包含相应的 参数,该参数与指定的前缀加上属性名称匹配--例如 blog_documentIdcomment_formName。通过默认值提供的值 参数(没有匹配的前缀)将被忽略。
  2. 如果ignoreRequestParams属性的计算结果为true,则为no 数据源的属性将由URL覆盖,而不考虑任何 查询字符串参数值。此属性的默认值为false,因此如果要确保URL永远不会影响特定数据源实例的属性值,则必须在该实例上将其设置为true。
但是,对象数据源尚未实现任何此行为。因此,为ignoreRequestParamsrequestParamPrefix属性设置的任何值都不会影响此类型数据源的任何实例的行为。

没有实现它的原因可能是因为对象数据源完全是任意的,所以没有预定义的假设它的任何实例都将支持特定的属性。您可以在数据源实例的createObject属性中定义一个"方法绑定"(SSJS函数或Java方法),它构成了创建数据对象的业务逻辑。因此,结果对象可以是您想要的任何东西,它可以支持您想要的任何属性,确定这些属性的初始值的逻辑可以是您想要的任何东西。因此,在定义数据源的初始状态时,您当然可以自由引用该方法绑定中的内部全局变量param,以考虑您想要的任何URL参数。

例如,以下内容将是对象数据源实例的createObject属性的完全有效的方法绑定:

return {
    firstName: (param.get("firstName") || ""),
    lastName: (param.get("lastName") || ""),
    email: (param.get("email") || "")
};

这将产生一个对象,您可以将数据组件绑定到.例如,如果您对数据源的var是"注册":

#{registration.firstName}

如果URL包含与属性名称匹配的参数,则对象的每个属性都将具有默认值。

自然,您的逻辑可能要复杂得多:使用视图和键参数(而不是文档ID)检索文档并加载字段值,根据URL中标识的外键查询非Domino数据.对于此类型的数据源,天空正好是限制,因为事先没有定义任何内容。

这篇关于XPages扩展库和对象数据源的使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆