2012-04-11 2 views
1

Я использую xe: objectData как источник данных для xp: dataTable. objectData1 использует некоторый код Java для извлечения всех документов из представления, соответствующего ключу (имя пользователя). Код Java выглядит следующим образом:xe: objectData - Объект удален или переработан

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 имеет следующий код enter image description here

Когда я сначала загрузить страницу, данные считываются из wiew и DataTable отображает NoteIDs всех соответствующих документов , Когда я обновляю страницу с помощью кнопки, я получаю сообщение об ошибке «Объект был удален или переработан». Может кто-нибудь pls. показать мне, что я делаю неправильно? (и, возможно, как это сделать правильно)

ответ

4

Проблема в том, что объекты Notes не являются сериализуемыми. Во время частичного обновления выполняется метод getVisits()доupdate() метод. ViewEntryCollection - это ссылка на представление, и это представление уже переработано.

Если вы просто хотите сохранить некоторые идентификаторы заметок, вы можете сохранить их в векторе вместо этого. В противном случае вам необходимо позвонить в ваш update() метод в вашем getVisits() метод каждый раз.

+0

Ах, я вижу. Спасибо за объяснение –

Смежные вопросы