xpages调用后台代理

前段时间做了一个类似门户添加系统的功能,大体框架是,后台有几十个文档(主文档),文档里有读者域(都包括管理员),还有与主文档对应的目录文档(只有名字和临时记录用户),用户在xpages页面上看不到任何文档,然后用户点击添加,可以随意添加系统(在文档的读者域中添加上用户的邮箱)。

因为用户没有操作文档的权限(因读者域中并没有用户),所以需要按钮执行后台的代理(本文使用LS代理,使用java代理也是一样的),具体操作如下。


1、在前台按钮的服务前端添加如下JavaScript代码:

//comboBox1是获得用户的选择

var comboBox1:com.ibm.xsp.component.xp.XspSelectOneMenu = getComponent("域名字");
var a = comboBox1.getValue();

//根据用户的选择找到对应目录文档,在目录文档中的临时用户域中添加上当前用户

var view = database.getView("视图名字")
var doc:NotesDocument = view.getDocumentByKey(a);
if(doc!=null){
doc.computeWithForm(false,false);
doc.save();

//执行代理,将目录文档ID传到代理中
agent = database.getAgent("代理名字");
unid = doc.getNoteID();
agent.run(unid);

return;
}
2、然后在代理中创建一个LS代理,注意:代理的触发器必须是基于事件,操作菜单选择,目标是无。

 Sub Initialize

Dim ss As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Dim sdoc As NotesDocument
Dim ag As NotesAgent
Dim noteid As string


Set db = ss.Currentdatabase
Set ag = ss.Currentagent
noteid = ag.Parameterdocid

Set doc = db.Getdocumentbyid(noteid)
If doc Is Nothing Then
Print"啊啊啊,没有找到目录文档啊"
Exit sub
End If
Dim notename As String
notename = doc.dbname(0)
Set view = db.Getview("ALL")
Set sdoc = view.Getdocumentbykey(notename)
If sdoc Is Nothing Then
Print"啊啊啊,没有找到配置文档啊"
Exit Sub
End If
Dim item As NotesItem
Set item = sdoc.GetFirstItem("docReader")
Dim temname As String
temname = doc.temname(0)
Call item.AppendToTextList(temname)
item.IsReaders=True
Call sdoc.Save( False, True )
End Sub

以上的代码仅仅是找到主文档,然后得到目录文档中的用户名添加到主文档的读者域中,这样就可以实现任何的用户添加都是执行的管理员的权限。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值