我使用xe:objectData作为xp:dataTable的数据源。 objectData1使用一些Java代码从视图中检索与键(用户名)匹配的所有文档。 Java代码如下所示:
package com.isatweb.cois;
import static com.ibm.xsp.extlib.util.ExtLibUtil.getCurrentDatabase;
import static com.ibm.xsp.extlib.util.ExtLibUtil.getCurrentSession;
import java.io.Serializable;
import lotus.domino.Database;
import lotus.domino.Name;
import lotus.domino.Session;
import lotus.domino.View;
import lotus.domino.ViewEntryCollection;
public class ObjectDataVisits implements Serializable {
private static final long serialVersionUID = 1L;
ViewEntryCollection vec = null;
public ObjectDataVisits(){
try {
this.update();
} catch (Exception e) {
System.out.print(e);
}
}
public void update() {
try {
Database _db = getCurrentDatabase();
Session _session = getCurrentSession();
Name nam = _session.createName(_session.getEffectiveUserName());
String username = nam.getAbbreviated().replace(" ", "#").replace("/", "#").toUpperCase();
View view = _db.getView("vw_visit_open");
this.vec = view.getAllEntriesByKey(username);
} catch (Exception e) {
System.out.print(e);
}
}
public ViewEntryCollection getVisits(){
return this.vec;
}
}
XPage具有以下代码
当我第一次加载页面时,数据从wiew中读取,dataTable显示所有匹配文档的NoteID。 当我使用按钮刷新页面时,我收到“对象已被删除或回收”错误。 任何人都可以。告诉我我做错了什么? (也许,如何正确行事)
答案 0 :(得分:4)
问题是,Notes对象不可序列化。在部分刷新期间, getVisits()方法在更新()方法之前执行。 ViewEntryCollection是对视图的引用,此视图已被回收。
如果您只想存储一些音符ID,那么您可以将它们存储在Vector中。否则,您每次都必须在 getVisits()方法中调用 update()方法。