Xpages
文章平均质量分 78
starrow
介绍
展开
-
59. XPages自定义控件(二)搜索视图
下面笔者用一个例子来展示用户控件的代码、使用和强大功能。在12. 如何在XPages中实现搜索视图里介绍的搜索视图的方法如果在每个需要搜索功能的页面上都做一遍,未免麻烦,也不易维护。于是,按照XPages提倡的做法,笔者将视图全文搜索的功能包含在一个SearchView用户控件里。打开数据库的全文检索,将这个控件放在任何含有标准视图控件的页面上,一个由一个输入框和搜索、清除两个按钮组成的具备下列功原创 2013-10-09 15:09:18 · 3783 阅读 · 0 评论 -
42. Lotus Notes中的垃圾回收之Java
Java里有垃圾回收的物事,Lotus Notes中的Java当然也有。垃圾回收在Java语言里有专门论述,对Lotus Notes里的Java程序都是适用的。只不过Lotus Notes中的Java程序与一般所说的Java程序相比,有些特殊,其垃圾回收也有值得说明之处。Lotus Notes中的Java程序,可以分为两类。一是传统客户端或Web应用中,用Java写的代理。这几乎是传统Lotu原创 2013-07-23 20:18:27 · 3818 阅读 · 1 评论 -
70. 在XPages中展现集合数据
数据绑定机制本文说的集合简单指多个具有同样结构的数据实体的总和,比如视图的部分或所有文档,查询数据库得到的记录集,一组模型(model)对象等等。在web应用程序里通常用表格来显示这样一个集合。作为基于组件的web框架,XPages提供了几种标准控件来显示这样一个集合:Repeat、View和Data Table。View用于显示一个Notes视图;Data Table以一个表格的形式显示一个集合原创 2013-12-05 17:43:14 · 4834 阅读 · 1 评论 -
69. XPages里的Java日志器
在48. 面向对象的LotusScript(十四)之Log4Dom上和49. 面向对象的LotusScript(十五)之Log4Dom下笔者介绍了一个简单实用的日志记录模块,代码用LotusScript写成,在Lotus Notes传统的客户端和web应用程序里都可以使用。在XPages开发里,需要可在SSJS或Java里使用的日志功能。用Java开发时,有很多现成的日志框架,比如Log4J和JD原创 2013-11-29 16:02:38 · 4118 阅读 · 1 评论 -
72. XPages的文档数据源
在经典的Lotus Notes应用程序开发中,表单与Notes文档密不可分,在位于表单的代码里获取当前文档几乎是后续所有操作和运算的起点。在XPages里,页面和数据虽然在架构上是分开的,但是一个用作表单的XPage的数据源通常还是一个Notes文档,只不过在SSJS里可以直接使用的document1等变量对应的是一个Java的com.ibm.xsp.model.domino.wrapped.Do原创 2013-12-16 18:35:49 · 3960 阅读 · 0 评论 -
75. XPages中Java开发的一些有用方法
在用Java进行XPages开发时,有一些常见的基础性的任务。这些经常要做的事部分与在Lotus Notes客户端开发时遇到的相同,例如获得当前Session和数据库对象,但是达成的方法与用LotusScript截然不同;其它则是XPages开发环境特定的需求,比如获得当前com.ibm.xsp.designer.context.XSPContext和RequestMap对象(即RequestScope变量)。将这些频繁需要的任务以静态方法的形式写在一个工具类里是很好用的:原创 2013-12-30 12:29:49 · 4518 阅读 · 1 评论 -
76. Lotus Notes编程中的命名习惯
程序里实体的命名规则和习惯在一种开发环境里编程,会用到各种实体(开发中用到的从文件类型、程序的组织单元到数据库对象的种种对象,不用对象一词以与面向对象语言里的对象区分)。实体种类的多少,与所用语言和平台的复杂程度和特点有关。例如用像JavaScript的脚本语言就只会遇到对象、函数、变量等寥寥几种实体;使用Java时就会用到接口、类等更多实体;如果用到了数据库,又会涉及到诸如数据库、表和字段等相关原创 2014-01-06 15:49:48 · 4422 阅读 · 0 评论 -
77. Lotus Notes中编程发送邮件(三)之XPages中用Java发送邮件
在46. LotusNotes中编程发送邮件(一)和47.Lotus Notes中编程发送邮件(二)里笔者介绍了在Lotus Notes发送邮件的几种简单场景和需求,并给出了以LotusScript编写的通用代码。本文介绍可在XPages开发时使用的一个用于发送邮件的Java类,具备LotusScript代码的所有功能,且有更友好方便的API。这个类具备如下功能:发送Notes邮件。发送HTML邮原创 2014-01-07 16:27:53 · 6785 阅读 · 4 评论 -
78. Domino Designer 9.0.1升级无忧!
我昨天将DominoDesigner从9.0升级到9.0.1版本。这是一个维护版本(maintenance version),主要是修复bug,但是和很多主版本之后最初的维护版本一样,也有不少What's new?,对我来说不算吸引。经过几个小时的下载安装后,最大的惊喜却来自文档里没有提到的地方。用过8.5.X和9.0的朋友都知道,每次升级后,工作集(working set)、帮助文档里的书签还有原创 2014-01-09 17:49:54 · 5360 阅读 · 2 评论 -
18. frameset邪恶吗
frameset曾经是构建多栏目网页的标准技术,被广泛使用,但是近年来已进越来越少见到它的踪影。在网上搜索一下,这个词更多的是与邪恶、如何代替、缺点这些主题联系在一起。frameset真的邪恶吗?各种文章提到的缺点主要有以下几条:1. (尽管互联网技术飞速发展了这么多年)仍然存在少数浏览器不支持frameset。除非是想建立像Google这样的网站和有信心和责任感让全世界的网原创 2012-12-29 13:57:59 · 3440 阅读 · 0 评论 -
79. 视图里的计算属性——从ASP、JSP、JSF到XPages的“钻石”
XPage文件里的几乎所有属性都可以设置公式来计算,这确实给应用程序的视图开发带来了极大的灵活性,不过这在Lotus Domino平台以外并不新鲜。用HTML或XML这样的声明性语言来定义用户界面,再辅以某种简单的表达式语言来设置计算的属性值,以实现动态的界面。首先采用声明性语言定义界面比用命令型语言简洁高效。其次单独的界面定义文件彻底贯彻了界面和业务逻辑分离的原则。最后利用表达式语言和事件绑定既清晰地实现了视图(view)和模型(model)之间的信息传递和控制转换,又保持了两者的独立性。这种良好的架构在原创 2014-01-28 10:31:39 · 4197 阅读 · 0 评论 -
67. 表单提交与校验
表单提交绝大部分应用程序都需要从用户获得输入,其中很大部分便是以表单输入的形式。一个表单,从用户输入系统接收到数据处理,会经历几个普遍的阶段。一个完备的表单提交流程具备以下几个不同阶段的功能:限制:根据字段的数据类型,表单对输入控件所接受的字符做限制。例如,文本类型的字段限制长度,数字类型的字段就不接受输入字母字符,日期时间类型的字段如果采取直接输入也可以限制输入的字符类型和格式。转换:系统按各字原创 2013-11-21 17:43:46 · 4840 阅读 · 0 评论 -
81. Domino视图Web展现技术胪列
以列表形式显示大量数据是各种开发中最常见和基本的需求之一。在数据保存在关系型数据库的Web开发中,程序员要处理的是分开的两项任务,一是从数据库中查询记录,二是在视图层生成显示这些数据的HTML。如何分页是主要问题。Domino以界面为导向的开发风格和不适于动态查询的文档型数据库使得程序员面临完全不同的处境和问题。预先设计的视图不仅定义了包含的文档,也设置了外观属性,集数据层和外观层的功能于一体。在原创 2014-10-15 17:14:21 · 6281 阅读 · 0 评论 -
14. 如何在XPages中插入HTML
在经典的Notes Web开发中,我们经常需要在表单中插入HTML,即Pass-Through HTML,因为Domino Web引擎将表单上的设计元素转换成HTML时既原始丑陋又没有给开发人员太多控制调整的机会。在XPages里,大部分情况下,我们只需要添加控件,设置属性,XPages引擎就能产生出令人满意的HTML。但是,在某些情况下,还会需要手工添加和编写HTML,因为目前的控件还不够全面。原创 2012-12-19 09:45:06 · 3596 阅读 · 0 评论 -
90. 基于Notes/Domino的文档工作流系统(二)
XPages下的工作流演示网页外观的可能性在技术上超过Notes客户端里的表单,Web应用程序在页面设计上花费的精力和取得的效果也远远超过基本保持传统客户端应用程序界面风格的Notes。我是程序员,不是设计师。在下面的演示里,页面都以展现功能为主,基本采用XPages的默认输出。按状态分类显示采购单的视图:采购单页面:单击Flow actions…按钮弹出的对话框:流程设置先来看看这个采购系统的流原创 2015-01-09 12:13:09 · 6381 阅读 · 0 评论 -
99. Domino开发领域的动态
本文想根据国外的状况简略谈谈Domino开发领域的变化和动态。时间上从XPages的引入开始。XPagesV8.5.0引入了全新的XPages开发。在随后的小版本中,在性能上做了许多改进。从V9.0开始,将原来社区开发的Extension Library纳入产品。Extension Library中的控件补充了标准控件的一些功能上的空白,但是在设计端的易用性和文档的完善上,远不如标准控件,所以说使用原创 2015-10-11 11:43:40 · 4027 阅读 · 0 评论 -
71. 从Lotus Notes表单到XPage——兼谈程序里的二进制文件和文本文件
本文对比分析了LotusNotes平台上两种视图技术。架构和运转过程的分析特定于Lotus Notes平台,其后的关于二进制文件和文本文件的讨论则具有普遍性。(严格地说,XPages指的是IBM基于Lotus Domino和JSF的快速开发技术,XPage则指单个页面,两者的首两个字母都大写。笔者一直遵守这个拼写上的规则。)架构XPa原创 2013-12-12 15:45:13 · 3974 阅读 · 0 评论 -
64. XPages自定义控件(三)高级搜索之二
现在来看看63. XPages自定义控件(三)高级搜索之一中提到的RecordView自定义控件的代码。从控件的设计视图自上而下可以看到用于条件查询的控件、一个向用户反馈操作消息的Message自定义控件、常见的视图操作的几个按钮和一个XPages自带的视图控件。 RecordView控件的设计界面RecordView控件从功能上分成的这四个部分,我们来一一检视:用于条件查询的控件RecordVi原创 2013-11-12 18:01:43 · 4292 阅读 · 0 评论 -
6. Lotus Notes中的开发语言
Lotus Notes中的开发语言有很多种,这在其它平台中是比较少见的。每种语言都有各自的长处和适用的场合,本文就简单介绍和比较在经典Notes开发和XPage开发两种类型下的各种语言。经典Notes开发这里的经典是指相对XPage技术出现之前的Notes开发。1. 公式语言公式语言是最早出现在Notes中的程序语言。它主要是用来进行简单的计算和自动化操作。其提供的公式,原创 2012-12-04 17:28:12 · 5133 阅读 · 0 评论 -
58. XPages自定义控件(一)背景
作为JavaServer Faces(JSF)技术的扩展,组件(component)同样是XPages的核心。组件提供了独立的可重用的用户界面功能,大大简化了开发。在XPages的数据库里,这种组件一般被称为控件(control)。XPages推出时预备了一套基本常用的控件,后来又在XPages扩展库(XPages Extension Library)增加了大量有用但质量和文档参差不齐的控件。除了原创 2013-10-09 14:49:39 · 3632 阅读 · 0 评论 -
60. 从JSF看XPages的优点
我们都知道XPages基于JSF,或者可以说XPages是JSF标准的实现(implementation)之一。JSF从2004年的1.0到现在的2.0,已经经历了很大的变化和发展。XPages最初开发的时候JSF 1.2还没有推出,所以是以1.1为基础的。JSF在1.2之前的名声是很糟糕的,bug无数,性能低下。幸运的是,XPages在JSF 1.1之上做了很多改进,纠正了它的缺陷,实现了很多1原创 2013-10-15 12:17:53 · 3657 阅读 · 0 评论 -
24. 提高Domino Designer开发XPages的性能
对于程序员来说,不仅开发的应用的性能重要,开发工具的性能的影响更是直接密切。采用Eclipse平台后,Domino Designer占用的资源大大增加,运行速度也下降不少。工欲善其事,必先利其器。针对Domino Designer运行速度的两大瓶颈,这里介绍分别的应对之道。Eclipse因为其Java程序的本质和丰富的功能,比机器代码下的Designer占用多得多的内存。而Designer默认原创 2013-01-09 21:31:43 · 3306 阅读 · 0 评论 -
15. 如何在XPages中提示操作成功
Web将开发分成前端和后端两部分,两端的代码就有了各种交互的需要和模式。前端的Javascript进行校验和界面操作,业务逻辑则在服务器上运行。早期两者交互的模式是,前端脚本完成校验后提交,服务器运行业务逻辑后,转向另一页面或者更改原页面的显示。Ajax流行之后,前端的Javascript以不刷新页面的方式提交后等待服务器的结果再更新页面。在更新页面部分又可以分为两种情况,一种是较为普遍的服务器返原创 2012-12-20 13:42:59 · 3722 阅读 · 0 评论 -
7. 在XPages里怎么实现一次显示分类视图的一个类别
分类视图是Notes显示文档的独特和强大的功能。在客户端和传统Web开发中,有时会希望一次显示分类视图的一个类别,在这两种环境下,都很容易实现。XPages终于把Notes环境下的web开发现代化了。很多传统web开发中的问题都能够漂亮地解决。那我们就来看看如何在XPages里怎么实现一次显示分类视图的一个类别。在XPages页面上分别创建一个下拉框和视图控件。下拉框用来切换要显示的类别,它的原创 2012-12-04 17:30:57 · 3927 阅读 · 0 评论 -
31. 怎样在Xpages应用中写Java
机制菜单栏Windows—Open EclipseViews—Package Explorer,打开一个Xpages应用,新建一个Java源文件夹(如WebContent\src),创建一个Java Class,开始编码。这就是在版本8.5.3之前的Designer里写Java代码要经历的步骤。对于使用Eclipse的开发人员来说很普通,对于Domino开发人员来说是非典型的后门。IBM正原创 2013-02-21 14:08:36 · 4310 阅读 · 2 评论 -
22. 为什么要在XPages中写Java
不算很多年前,当时如日中天的浏览器开发商网景公司为他们的明星产品NetscapeNavigator增添一项新的迷人的小功能,因为当时的Java热潮而被命名为JavaScript的脚本语言。很快,如同他们发明的Cookie一样,JavaScript成为了浏览器端的标准技术。其时,网景公司也想到了在服务器端使用自家的语言,也就是LiveConnect技术。虽然它没有成为ASP,PHP,Java的竞争对原创 2013-01-06 12:25:02 · 3647 阅读 · 1 评论 -
10. 如何在XPages里实现典型的Notes权限控制?
在传统Notes开发中,我们经常通过隐藏公式实现对用户权限的控制。在控制权限时,有时依据用户名,有时是用户所属的群组,还有时是其角色。这些信息都被包含在@UserNamesList的返回值里,这样我们就可以很方便地将它们与某个预定或由程序更新的域的内容作比较,实现对权限的灵活控制。@IsMember(@UserNamesList;FieldName)这样的隐藏公式可以作为一个样例。在XPage原创 2020-07-03 09:09:46 · 3716 阅读 · 0 评论 -
9. 如何在XPages里的Java代码中创建Session
Notes对象可以分为两大类。第一类是Notes功能的基石,比如NotesSession, NotesDatabase, NotesView, NotesDocument,NotesItem。它们又可以被称为后端对象。另一类提供的是与客户机的用户界面有关的前端对象,如NotesUIWorkspace, NotesUIView,NotesUIDocument。对应地,在客户机中使用Notes对象有两原创 2012-12-12 11:07:26 · 3142 阅读 · 1 评论 -
16. 如何在XPages中实现onload效果及在新窗口中打开视图链接
国外的很多新闻和公司网站的链接都在当前窗口打开,这种文化上的差异也体现在XPages上。视图控件产生的链接都是在当前窗口打开。从8.5.2起,新增加了target属性,可以设置为_blank,在新窗口中打开链接,但是竟然只适用于Notes客户端。于是为了符合我国(或者是我)的习惯,就必须自己动手。最直接的想法是在window.onload事件中找出视图包含的链接,修改它们的target属性。X原创 2012-12-21 12:12:52 · 4423 阅读 · 13 评论 -
12. 如何在XPages中实现搜索视图
在客户端中搜索当前视图有好几种方式:全文检索、搜索视图和对排序列按首字词定位。在Web环境中,适用并且用户习惯的便是全文检索。那么如何在XPages中实现检索当前视图的功能呢?首先,开启数据库的全文索引。然后在一个XPage中添加一个视图数据源,该数据源可以指定“Searchin view results”属性,即XML文档中的search属性。设定一个固定的要搜索的词当然没什么用处。我们便在原创 2012-12-17 14:05:50 · 3981 阅读 · 2 评论 -
17. 如何在XPages里创建大纲/导航?
XPages自带的控件集最缺乏的恐怕就是类似于经典Notes开发的大纲了。虽然一个大纲/导航是一个Web应用几乎不可缺少的部分,但是截至8.5.3,IBM仍然没有为开发人员提供这个方便。接着,提供了一堆控件的UpgradePack 1来了,继承了大量在OpenNTF网站上已经发布的XPagesExtension Library的内容。其中,就有一个outline和一个navigator。但是这些控原创 2012-12-27 13:03:56 · 3371 阅读 · 0 评论 -
8. 从Lotusscript到Java
随着Notes开发逐渐转向使用XPages,主要的编程语言也从Lotusscript变成了服务器端Javascript和Java。无论是开发新的功能还是迁移旧的系统,都需要用这些新语言编写大量代码。使用Java开发有其独特的优势,以后会专门介绍。这里先谈谈从Lotusscript转换到Java需要注意的地方。首先是语法的差异。这是最明显也最容易注意到的。比如下面这些基本的差别原创 2012-12-12 11:01:47 · 3231 阅读 · 0 评论 -
65. XPages自定义控件(三)高级搜索之三
RecordView控件的两个文件的完整代码在本文末尾给出。虽说完整,仅靠这两个文件,RecordView控件还不能正常工作,因为在这两个文件里还引用了其他自定义控件,调用了作为managed bean的starrow.xsp.App的方法,即使把这些代码也都全加上,仍然不是自足的,因为在starrow.xsp.App类里,又调用了其他辅助类的代码。所以这两个文件的代码不像笔者在以前很多文章中给出原创 2013-11-14 15:36:53 · 3898 阅读 · 0 评论 -
68. XPages里的动态非空校验
在67. 表单提交与校验里,笔者提到在一个表单提交的数据就绪给业务逻辑使用前,通常会经过转换和验证的过程,在用XPages开发时也不例外。当一个编辑框的value属性被绑定到一个DominoDocument数据源的某个字段时,Domino Designer会自动根据该字段在表单上定义的数据类型为这个编辑框添加合适的转换器(converter),比如日期类型的会被添加xp:convertDateTi原创 2013-11-22 17:57:05 · 3359 阅读 · 0 评论 -
63. XPages自定义控件(三)高级搜索之一
在59. XPages自定义控件(二)搜索视图里,笔者演示了如何用一个自定义控件给一个XPage页面添加全文搜索的功能,这在以文档为主要数据的系统里很好用,也足够了。不过,如在《62. 全文搜索与条件查询》一文里提到的,对于包含了结构化数据的系统,用户经常希望按字段做更精确的条件查询,利用Lotus Notes全文搜索支持的查询语法,也可以实现这一点。下面笔者就同样用一个控件来演示简单的多条件查询原创 2013-11-11 11:30:35 · 4790 阅读 · 0 评论 -
101. Domino 10 就要来了
根据IBM网站上的公告,Domino V10将于2018年10月9日发布,为此网页上方还做了一个倒计时。说实话,我最近看到这些新闻时,是颇有些讶异的。距离2013年发布V9已经过去了五年,Domino历史上从来没有间隔这么长时间才推出新版本。包括我在内的很多人的判断都是9将成为Domino最后一个版本。导致和支持这种猜测的证据很多。Domino的市场份额持续走低,XPages也没有挽回颓势,IBM...原创 2018-09-04 08:01:40 · 4629 阅读 · 0 评论