哪种方法可以访问控件的最有效方法?

Bil*_*l F 6 performance xpages xpages-ssjs

在这两个选择中,我必须访问最有效的控件的值?

getComponent("ControlName").getValue();
Run Code Online (Sandbox Code Playgroud)

要么

dataSource.getItemValue("FieldName");
Run Code Online (Sandbox Code Playgroud)

我发现有时getComponent似乎没有返回当前值,但访问dataSource似乎更可靠.那么从性能角度来看,它是如何使用的呢?

dataSource.getValue似乎适用于我尝试过的所有地方.但是,在使用rowData时,我似乎仍然需要执行rowData.getColumnValue("Something").rowData.getValue("Something")失败.

Tim*_*ony 17

都不是.最快的语法是dataSource.getValue ("FieldName").该getItemValue方法仅对文档数据源可靠,而该getValue方法不仅可用于通过视图数据源访问的视图条目(尽管在该上下文中,您将传递视图列的编程名称,这不一定是与字段相同的名称),但也可用于您开发或安装的任何自定义数据源(例如第三方扩展库).此外,它会进行自动类型转换,如果您使用它,则必须自己进行getItemValue.

即使在很简单的页面,dataSource.getValue ("FieldName")是5倍的速度getComponent ("id").getValue (),因为,正如弗雷德里克提到,首先它必须找到该组件,然后问它的价值是什么......这,在幕后,只是要求数据源反正.因此,自己询问数据源总是会更快.

注意:相应的写入方法dataSource.setValue ("FieldName", "NewValue")不是dataSource.replaceItemValue ("FieldName", "NewValue").双方将工作,但setValue也做了同样类型转换的是getValue呢,所以你可以通过它,不严格遵守旧的Domino Java API的数据,它通常只是计算出的值需要的东西转换为以可Domino存储的"安全".