帶參數運行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