带参数运行UserBean类对于一个项目,我想使用的UserBean成立了由奥利弗·布斯:如何为托管bean
我已经改变了一点,所以我也可以用它对于其他数据库,不仅仅是当前的数据库。
大多数我的bean的是从原来的代码,虽然我做了一些补充,捕获用户的ACL特权时太:
int accPriv = thisDb.queryAccessPrivileges(session.getEffectiveUserName()); if ((accPriv & thisDb.DBACL_CREATE_DOCS) > 0) { if (!aclPriviliges.contains("DBACL_CREATE_DOCS")) { aclPriviliges.add("DBACL_CREATE_DOCS"); } } if ((accPriv & thisDb.DBACL_DELETE_DOCS) > 0) { if (!aclPriviliges.contains("DBACL_DELETE_DOCS")) { aclPriviliges.add("DBACL_DELETE_DOCS"); } } if ((accPriv & thisDb.DBACL_CREATE_PRIV_AGENTS) > 0) { if (!aclPriviliges.contains("DBACL_CREATE_PRIV_AGENTS")) { aclPriviliges.add("DBACL_CREATE_PRIV_AGENTS"); } } //etc...
的面孔,配置:
<managed-bean>
<managed-bean-name>UserBean</managed-bean-name>
<managed-bean-class>org.quintessens.comments.utils.UserBean
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
这里我是如何发起这个豆的:
<xp:this.beforePageLoad><![CDATA[#{javascript:var db:NotesDatabase = session.getDatabase("","apps/quintessens/comments.nsf");
UserBean.init(db);}]]></xp:this.beforePageLoad>
我注意到我只能使用会话和请求范围的bean。查看范围给出500错误。
UserBean类本身大多以原文:
一些修改:
public Database db;
public UserBean() {
this.init(db);
}
和
public void init(Database db) {
session = getCurrentSession();
try {
Database thisDb = db;
...
int accPriv = thisDb.queryAccessPrivileges(session.getEffectiveUserName());
...
}
虽然我没有得到与会话和请求范围的误差, ACL用户特权不正确。
如果我运行的类没有管Bean如下:
var thisDb:NotesDatabase = session.getDatabase("","apps/quintessens/comments2.nsf");
Bean = new org.quintessens.comments.utils.UserBean(thisDb);
return Bean.aclPriviliges;
我得到返回的正确的用户信息。
有人可以照亮我如何使用参数再次作为托管bean运行该类?
还有一个想法:您的代码片段为列表,但id不关心删除它们。当您的代码运行在两个不同的dbs或用户上时,这可能是您获取错误ACL的原因。 –
您可以通过faces上下文访问多米诺骨牌对象,请参阅http://naveegator.blogspot.ch/2011/12/accessing-xpages-global-objects-in-java.html – umeli