58. XPages自定义控件(一)背景

作为JavaServer Faces(JSF)技术的扩展,组件(component)同样是XPages的核心。组件提供了独立的可重用的用户界面功能,大大简化了开发。在XPages的数据库里,这种组件一般被称为控件(control)。XPages推出时预备了一套基本常用的控件,后来又在XPages扩展库(XPages Extension Library)增加了大量有用但质量和文档参差不齐的控件。除了使用这些现成的控件,创建自定义控件(custom control)也是XPages提倡的开发实践。这样做的好处,和在传统Notes开发里建子表单是一样的,都可以实现更好的代码重用和维护。

在进一步讨论XPages之前,笔者想先提一下另一门时间更少影响也更广的web开发技术,作为参考是有好处的。在用户界面上采用组件在XPages和JSF之前已有很长的历史,微软的声名卓著的VisualStudio系列技术就以此为重要特色。后来为应对J2EE而退出的.Net技术中组件也是核心,无论在桌面应用的WindowsForms还是在web开发的ASP.NET都是如此。就与本文主题有关的web开发来说,ASP.NET成功地将VisualBasic大受欢迎的用户界面组件加事件编程的技术应用到web开发。在ASP.NET里,要创建自己的控件分为两类情况。一类是“从头实现”控件的底层功能,编写一个类继承自control,并实现INamingContainer接口,甚至重写控件的Render方法,控制控件生成的HTML代码,以及实现响应从浏览器传回数据(postback)的事件和处理传回的数据。这类控件名为“自定义控件”(custom control)或“复合控件”(composite control)。与此相对比较简单的是第二类“用户控件”(user control),它只需像创建一个ASP.NET页面一样在设计器里拖拉系统控件设计界面,然后为这些控件添加必需的事件代码。这两类控件,从面向对象编程的扩展新功能来说,前者应用的是继承(也可以在继承的控件类里组合现成的控件,但出发点是继承),后者则纯粹只是组合。

回到XPages,JSF的理念就借鉴了ASP.NET,不少方面都与它相似。在XPages里,用户可以类似ASP.NET第二类控件的方式快速方便地创建自己的控件——自定义控件(custom control),也就是将现有其他控件组合起来形成一个新的控件。ASP.NET中的第一类自定义控件在XPages里也有对应物,类似地它们也需要编写Java代码,继承基类,实现控件的底层功能。这样做十分繁杂,还需了解XPages和JSF的底层知识,并且还是在IBM公布XPagesExtensibility API以后才变为可能(IBM公司的开发人员和其他一些XPages的狂热者利用这个API开发了上面提到的XPages扩展库的控件)。与尽可能让程序员容易地开发的IBM在XPages上的策略相对比,对于一般的XPages程序员来说,创建这种自定义控件太困难也没有必要。所以笔者们的讨论只需要集中在“用户控件”。在Designer里,用户控件集中在CustomControls分类下,创建的过程与XPage页面类似,完成后就可以像系统控件一样在控件视图(controls view)供选择。每个用户控件有两个文件组成,一个是通常可见的用户控件设计元素,另一个则是选择Designer的Java视角(Java perspective)才能看到的配置文件。比如一个名为InputUser的用户控件,实际上由InputUser.xsp和InputUser.xsp-config两个文件组成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值