Я реструктурирую приложение, которое у меня есть. В текущем проекте у меня есть всякая логика для объекта person в одном классе (Person), но я понял, что лучше, чтобы этот класс Person должен описывать только модель данных и чтобы все действия вокруг модели данных Person лучше обрабатывается классом Controller (например, PersonController).null значение для заметок возвращено
Когда я переношу такой код из класса Person в PersonController, я получаю вместо возвращаемого значения NotesDocument.
Ниже приведен пример кода:
public void getByUnid(String unid) throws NotesException{
Database db = dao.getDatabase();
Document doc = db.getDocumentByUNID(unid);
if (null == doc) {
//doc not found
} else {
//doc found
prepareDoc(doc);
}
doc.recycle();
db.recycle();
}
private void prepareDoc(Document doc) throws NotesException {
fname = doc.getItemValueString("fname");
//...get other fields
}
Обычно я бы назвал Person.getByUnid (ID) и он работает отлично. Когда я вызываю PersonController.getByUnid (id), значение doc равно null.
Я делаю вызов в событии beforeonpageload на xpage, например. person.xsp:
<xp:this.beforePageLoad><![CDATA[#{javascript:
var id = paramValues.get("UNID");
if (id != null){
PersonController.getByUnid(id.toString());
}
else{
Person.create();
}}]]></xp:this.beforePageLoad>
Что я делаю не так, или я должен включать в себя класс Person в классе PersonController?
Есть ли db не null? существует ли единое целое? имеет ли пользователь доступ к документу? –
Я думаю, нам нужно немного больше информации. Когда getByUnid находился в классе person, он загружал все данные из документа, который поступает из db, который загружается dao. Имеет ли personController нулевое дао? –
Я думаю, проблема заключается в том, что объект Person не существует, когда я пытаюсь читать значения из него, например. Person.fname. До того, как объект Person уже был загружен. Поэтому мне интересно, как я могу инициализировать объект Person из PersonController с загруженными значениями? – Malin