Domino 8.5 XPages:新一代功能探索
5星 · 超过95%的资源 需积分: 10 185 浏览量
更新于2024-08-02
1
收藏 1.07MB PDF 举报
"Domino Xpage 101是Domino 8.5版本的一个新特性,由IBM爱尔兰的专家Martin Donnelly和Eamon Muldoon介绍。本资源聚焦于XPages技术,它是Lotus Domino应用开发的一个重要更新,旨在提升用户体验和现代化应用程序设计。"
在Lotus Domino 8.5中引入的XPages是一个强大的开发工具,它允许开发者创建具有现代Web界面的Lotus Domino应用程序。XPages基于JavaServer Faces (JSF) 技术,这使得开发者能够利用丰富的UI组件和Ajax功能来构建动态、交互式的Web应用。
Eamon Muldoon在IBM有着长期的工作经验,包括在Lotus Domino V3.x到V4.x时期的软件工程师职位,他在Domino的本地化和国际化方面做出了贡献,还参与了SMTP、cc:Mail和X400 MTA的国际产品管理,以及MIME支持在Notes/Domino V5.0中的实现。后来,他作为开发经理,推动了Domino Application Portlet 1.x和Lotus Component Designer 6.0等项目的发展,最终涉及到了Domino 8.5的XPages。
Martin Donnelly则是一位资深的软件开发者,他从Domino Designer V4.6到V6.01期间积累了丰富的经验,并参与了Lotus 123 for Unix、LotusScript等多个项目的开发。在IBM Software Group任职期间,他专注于JavaServer Faces (JSF) 工具的开发,以及Rational Application Developer (RAD)、Java Visual Editor和Domino Designer 8.5/XPages的架构设计。
在“Before We Begin”部分,演讲者提醒参会者关闭所有可能发出声音的设备,如寻呼机、手机等,以确保会议的专注和专业性。这个资源很可能是IBM在2008年发布的一份介绍XPages技术的演示文稿,提供给开发者和IT专业人士了解和学习如何利用XPages提升Lotus Domino应用程序的用户体验和功能。
通过学习和掌握Domino XPages,开发者可以利用其优势,比如拖放式开发、实时数据绑定和丰富的客户端脚本库,快速构建响应式和用户友好的企业级应用,从而将传统的Lotus Domino应用升级到符合现代Web标准的平台。这对于保持企业的技术竞争力至关重要,尤其是在数字化转型日益重要的今天。
2013-04-24 上传
XPAGE学习笔记
1 Theme 2
2 在Xpage中使用Dojo 2
2.1 加载dojo.js 2
2.2 设置应用程序主题引入tundra.css 2
2.3 设置xpage属性引入dojo模块 3
2.4 Xpage的页面html代码 4
2.5 在xpage中使用dojo编程 4
2.5.1 按钮(dijit.form.Button) 4
2.5.1.1 通过插入
标签生成dojo按钮 5
2.5.1.2 使用xpage按钮控件 7
2.5.1.3 在按钮控件上使用事件处理程序控件 7
2.5.2 Xpage中使用 Spinner(dijit.form.NumberSpinner) 9
2.5.3 在xpage中使用ProgressBar(dijit.ProgressBar) 10
2.5.4 在Xpage中使用树(dijit.Tree) 10
2.5.4.1 JSON与XML数据源 11
2.5.4.2 Box树与Order树 12
2.5.4.3 对树进行添加、删除及重命名操作 13
2.5.4.4 将树的操作记录到后台数据库 14
2.5.4.5 树的拖放 15
3 在Xpage中如何查找控件 16
3.1 理解document.getElementById 16
3.2 理解dojo.byId 17
3.3 理解dijit.byId 17
3.4 理解XSP.getElementById 17
3.5 理解getComponent 17
4 Xpage VS 表单 18
5 使用oneui主题 18
6 参考 18
6.1 JSON与String转换 18
6.2 XPage中调试代码 18
1 Theme
主题在Domino中的路径:D:\IBM\Lotus\Domino\xsp\nsf\themes
2 在Xpage中使用Dojo
Xpage自动加载dojo.js
通过设置应用程序主题将tundra.css引用到xpage
设置xpage属性,引用dojo模块
在xpage中使用dojo编程
2.1 加载dojo.js
Xpage会自动加载dojo.js,默认情况下xpage自动查找data\domino\js下的最新版本。也可以通过设置xsp.properties文件来修改dojo版本,重命名xsp.properties.sample 文件(D:\IBM\Lotus\Domino\data\properties\ xsp.properties.sample)
2.2 设置应用程序主题引入tundra.css
通过设置应用程序主题将tundra.css引用到xpage
2.3 设置xpage属性引入dojo模块
2.4 Xpage的页面html代码
2.5 在xpage中使用dojo编程
2.5.1 按钮(dijit.form.Button)
通过插入
标签生成dojo按钮
使用xpage按钮控件
在按钮控件上使用事件处理程序控件
2.5.1.1 通过插入
标签生成dojo按钮
第一步:在xpage中插入
第二步:在xpage中插入<xp:scriptBlock></xp:scriptBlock>
第三步:编写客户端javascript
<xp:scriptBlock>
<xp:this.value><![CDATA[function showDia(){
var dia = new dijit.Dialog({title:"dojo按钮演示",style:"width:150px"});
var pane = document.createElement("div");
pane.innerHTML = "<span>Hello Dojo!</span>";
dia.setContent(pane);
dia.show();
}
function btnDemo(){
var dojoBtn = dijit.byId("dojoBtn");
var dojoBtnNode = dojo.byId("dojoBtn");
dojoBtn.setLabel("Dojo Button");
// dojo.connect(dojoBtn.domNode,"onclick","showDia");
dojo.connect(dojoBtnNode,"onclick","showDia");
}
dojo.addOnLoad(btnDemo);]]></xp:this.value>
</xp:scriptBlock>
2.5.1.2 使用xpage按钮控件
<xp:button id="button1" value="按钮控件">
<xp:this.onclick>
<![CDATA[
var dia = new dijit.Dialog({title:"提示:",style:"width:150px;"});
var pane = document.createElement("div");
pane.innerHTML = "<span>dojo按钮演示!</span>";
dia.setContent(pane);
dia.show();
]]>
</xp:this.onclick>
</xp:button>
2.5.1.3 在按钮控件上使用事件处理程序控件
将事件处理程序控件拖放到按钮控件上
2.5.2 Xpage中使用 Spinner(dijit.form.NumberSpinner)
<xp:inputText id="numSales"></xp:inputText>
<xp:scriptBlock>
<xp:this.value><![CDATA[
dojo.addOnLoad(function(){
new dijit.form.NumberSpinner({
name:"#{id:numSales}",
value:50,
smallDelta:1,
min:0,
places:0},XSP.getElementById("#{id:numSales}"));
});
]]></xp:this.value>
</xp:scriptBlock>
var myvalue = "#{javascript:
var value;
if(getComponent("numSales").getValue() != null){
value = getComponent("numSales").getValue().intValue();
}else{
value = 50;
}
return value.toFixed(0);}";
new dijit.form.NumberSpinner({name:"#{id:numSales}", value:myvalue, smallDelta:1, constraints:{min:0,places:0}}, XSP.getElementById("#{id:numSales}"));
2.5.3 在xpage中使用ProgressBar(dijit.ProgressBar)
<xp:button value="Start" id="button2">
<xp:eventHandler event="onclick" submit="false">
<xp:this.handlers>
<xp:handler type="text/javascript">
<xp:this.script><![CDATA[
var numParts = Math.floor(100/7);
jsProgress.update({ maximum: numParts, progress:0 });
for (var i=0; i<=numParts; i++){
setTimeout("jsProgress.update({ progress: " + i + " })",(i+1)*100 + Math.floor(Math.random()*100));
}
]]></xp:this.script>
</xp:handler>
</xp:this.handlers>
</xp:eventHandler>
</xp:button>
2.5.4 在Xpage中使用树(dijit.Tree)
JSON与XML数据源
Box树与Order树
对树进行添加、删除及重命名操作
将树的操作记录到后台数据库
树的拖放
2.5.4.1 JSON与XML数据源
box.json文件
{
identifier:'id',
label:'name',
items:[
{id:1,name:"盒子1",type:"box",weight:0}
]
}
order.xml文件
<orders>
<order>
<orderNumber>001</orderNumber>
<description>订单001</description>
<priority>航运</priority>
<line>
<orderNumber>001-1</orderNumber>
<qty>1</qty>
<sku>11761</sku>
<description>精通DOJO</description>
</line>
<line>
<orderNumber>001-2</orderNumber>
<qty>3</qty>
<sku>11789</sku>
<description>项目管理那些事儿</description>
</line>
</order>
<order>
<orderNumber>002</orderNumber>
<description>订单002</description>
<priority>快递</priority>
<line>
<orderNumber>002-1</orderNumber>
<qty>10</qty>
<sku>11763</sku>
<description>精通J2EE</description>
</line>
<line>
<orderNumber>002-2</orderNumber>
<qty>30</qty>
<sku>11799</sku>
<description>超越对手</description>
</line>
</order>
</orders>
2.5.4.2 Box树与Order树
<xp:td style="height:200.0px" valign="top">
<xp:panel>
</xp:panel>
</xp:td>
2.5.4.3 对树进行添加、删除及重命名操作
<xp:table>
<xp:tr>
<xp:td>
<script type="dojo/method" event="onClick" args="item">
lastBoxSelected = item;
</script>
</xp:panel>
</xp:td>
<xp:td style="height:200.0px" valign="top">
<xp:panel>
添加
<script type="dojo/method"
event="onClick">
boxStore.newItem({id:2,name:"盒子2",type:"box",weight:0,orders:[]});
</script>
</xp:td>
<xp:td>
删除
<script type="dojo/method"
event="onClick">
if(boxStore.isItem(lastBoxSelected)){
boxStore.deleteItem(lastBoxSelected);
}
</script>
</xp:td>
<xp:td>
重命名
<script type="dojo/method"
event="onClick">
if(boxStore.isItem(lastBoxSelected)){
boxStore.setValue(lastBoxSelected,"name","新盒子");
}
</script>
</xp:td>
</xp:tr>
</xp:table>
2.5.4.4 将树的操作记录到后台数据库
<script type="dojo/connect" event="onNew" args="newItem">
var itemId = this.getValue(newItem,"id");
var itemName = this.getValue(newItem,"name");
dojo.xhrPost({
url:"agCreateNewBox?OpenAgent",
content:{id:itemId,name:itemName},
timeout:10000,
error:function(){alert("对不起,出错啦!");},
load:function(){alert("数据保存成功!");console.debug("数据保存成功!");}
});
</script>
<script type=”dojo/connect” event=”onDelete” args=”delItem”>
</script>
2.5.4.5 树的拖放
要使树具有拖放功能,仅仅需要设置dndController属性(dijit._tree.dndSource已废弃):
要限制拖放的行为,仅仅需要实现checkAcceptance或checkItemAcceptance处理函数即可:
以上已经实现了树的拖放功能了!
但是,如果要将拖放的结果保存起来,也就是说要改变树的模型并将模型数据保存,那么应该编写onDndDrop的处理函数(通过增加jsId获得dndController会出现this.avaria is null 错误,所以下面通过小部件初始化时将dndController传递给变量controller):
在boxDrop中与checkAcceptance一样可以得到target与source,另外,onDndDrop中的source与nodes有些相似source.selection[something]=nodes[somethin]
结合ItemFileWriteStore 可以实现对模型数据的保存
3 在Xpage中如何查找控件
3.1 理解document.getElementById
得到node,创建node可以用document.createElement
这样访问或设置节点的所有属性
node.innerHTML = “”
node.value=””
var id = node.id
var style = node.style
3.2 理解dojo.byId
得到node,也可以通过dijit.byId().domNode得到节点
dojo.byId(“myid”).value
dojo.byid(“myid”).id
dojo.attr(node,attribute) 如读取dojo.attr(node,”id”)
dojo.attr(node,attribute,value) 如设置dojo.attr(node,”id”,”myid”)
dojo.hasAttr(node,attribute) 如判断 dojo.hasAttr(node,”id”)
dojo.connect(node,”onclick”,handler)
dojo.removeClass(node,”myclass”)
3.3 理解dijit.byId
得到dojo控件对象,也可以通过dijit.byNode(dojo.byId())得到对象
不同的控件的getValue()返回值类型不一样
在xpage中对于标签可能使用期dijit.byId(“myid”),对于<xp:>标签是不可以的
dijit.byId().getValue()
dijit.byId().setValue()
3.4 理解XSP.getElementById
这是XSPClientDojo 库中定义的,XSP全局变量相当于document对象,为客户端访问xpage控件提供方法
XSP.getElementById(“#{id:myid}”)使用JSF表达式查询控件
var xid = XSP.getElementById(“#{id:myid}”)
xid.value = “myvalue”
xid.name = “myname”
xid.disabled = false
3.5 理解getComponent
javascript服务器端访问控件
getComponet(“myid”).getValue();
getComponet(“myid”).getSubmittedValue();
getComponent(“myid”).setValue();
getComponent(“myid”).setSubmittedValue();
4 Xpage VS 表单
5 使用oneui主题
6 参考
6.1 JSON与String转换
dojo.fromJson(string) 返回json对象
dojo.toJson(object) 返回string对象
eval(‘(‘+string+’)’) 返回json对象
6.2 XPage中调试代码
window.alert 函数不可用于服务器脚本。
使用以下函数写入服务器上的 console.log(例如 C:\Notes\Data\IBM_TECHNICAL_SUPPORT\console.log):
print(string) 写入一个字符串。
_dump(object) 写入表示对象的字符串。
2017-05-19 上传
2012-04-28 上传
点击了解资源详情
2014-09-09 上传
2013-08-23 上传
jiangzhengrong
- 粉丝: 0
- 资源: 1
最新资源
- Aspose资源包:转PDF无水印学习工具
- Go语言控制台输入输出操作教程
- 红外遥控报警器原理及应用详解下载
- 控制卷筒纸侧面位置的先进装置技术解析
- 易语言加解密例程源码详解与实践
- SpringMVC客户管理系统:Hibernate与Bootstrap集成实践
- 深入理解JavaScript Set与WeakSet的使用
- 深入解析接收存储及发送装置的广播技术方法
- zyString模块1.0源码公开-易语言编程利器
- Android记分板UI设计:SimpleScoreboard的简洁与高效
- 量子网格列设置存储组件:开源解决方案
- 全面技术源码合集:CcVita Php Check v1.1
- 中军创易语言抢购软件:付款功能解析
- Python手动实现图像滤波教程
- MATLAB源代码实现基于DFT的量子传输分析
- 开源程序Hukoch.exe:简化食谱管理与导入功能