Для проекта я хотел бы использовать UserBean установить Оливер Буссе:как запустить UserBean класса с параметрами, управляемого компонента
я изменил его немного, поэтому я также использовать его для других баз данных, а не только для текущей базы данных.
Большая часть моего боба из исходного кода, хотя я сделал некоторые дополнения, чтобы захватить пользователь аКЛ priviliges тоже:
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>
Я замечаю, что я могу использовать только компонент с областью сеанса и запроса. Область просмотра дает ошибку 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 неверны.
Если я бегу класс не как Managed Bean, как следует:
var thisDb:NotesDatabase = session.getDatabase("","apps/quintessens/comments2.nsf");
Bean = new org.quintessens.comments.utils.UserBean(thisDb);
return Bean.aclPriviliges;
Я получаю правильную информацию о пользователе возвратили.
Может кто-нибудь светить, как я могу снова запустить класс с параметрами в качестве управляемого компонента?
Еще одна мысль: ваш фрагмент кода добавляет привилегии для список, но id не заботится об их удалении. Это возможная причина, по которой вы получаете неправильный ACL, когда ваш код работает с двумя разными dbs или пользователями. –
Вы можете получить доступ к объекту домино через контекст лиц, например, http://naveegator.blogspot.ch/2011/12/accessing-xpages-global-objects-in-java.html – umeli