в контроле повторения XPage Я пытаюсь вычислить строку на основе значений даты в базовом представлении Notes. Первые два столбца вида - StartDate и EndDate соответственно.Использование методов ODA isBefore и isAfter для сравнения дат
В моем коде (см. Ниже) операторы печати прекрасно работают и печатают прекрасные даты на консоли. Как только он добирается до сопоставления даты, он вызывает некоторые ужасные ошибки.
var vReturn = "unknown";
try {
var vNow = new java.util.Date();
var vDateToday:org.openntf.domino.DateTime = session.createDateTime(vNow);
print("Today=" + vDateToday);
var vStartDate:org.openntf.domino.DateTime = row.getColumnValues()[0];
print("vStartDate=" + vStartDate);
var vEndDate:org.openntf.domino.DateTime = row.getColumnValues()[1];
print("vEndDate=" + vEndDate);
if (vDateToday.isBefore(vStartDate)) {
vReturn = "Forthcoming";
}
if (vDateToday.isAfter(vStartDate) && vDateToday.isBefore(vEndDate)) {
vReturn = "Current";
}
if (vDateToday.isAfter(vEndDate)) {
vReturn = "Completed";
}
}catch(e){
print("Travellog: " + e.toString());
}
return vReturn;
Первая дюжина строки выводятся на консоль выглядит следующим образом:
19/12/2016 11:25:45 HTTP JVM: Today=19/12/2016 11:25:45 GMT
19/12/2016 11:25:45 HTTP JVM: vStartDate=19/12/2016 00:00:00 GMT
19/12/2016 11:25:45 HTTP JVM: vEndDate=27/12/2016 00:00:00 GMT
19/12/2016 11:25:45 HTTP JVM: java.lang.NullPointerException
19/12/2016 11:25:45 HTTP JVM: at org.openntf.domino.xsp.script.WrapperOpenDomino$OpenFunction.call(WrapperOpenDomino.java:400)
19/12/2016 11:25:45 HTTP JVM: at com.ibm.jscript.types.BuiltinFunction.call(BuiltinFunction.java:75)
19/12/2016 11:25:45 HTTP JVM: at com.ibm.jscript.types.FBSObject.call(FBSObject.java:161)
19/12/2016 11:25:45 HTTP JVM: at com.ibm.jscript.ASTTree.ASTCall.interpret(ASTCall.java:197)
19/12/2016 11:25:45 HTTP JVM: at com.ibm.jscript.ASTTree.ASTIf.interpret(ASTIf.java:79)
19/12/2016 11:25:45 HTTP JVM: at com.ibm.jscript.ASTTree.ASTBlock.interpret(ASTBlock.java:100)
19/12/2016 11:25:45 HTTP JVM: at com.ibm.jscript.ASTTree.ASTTry.interpret(ASTTry.java:109)
19/12/2016 11:25:45 HTTP JVM: at com.ibm.jscript.ASTTree.ASTProgram.interpret(ASTProgram.java:119)
19/12/2016 11:25:45 HTTP JVM: at com.ibm.jscript.ASTTree.ASTProgram.interpretEx(ASTProgram.java:139)
...
Я попытался обертывание getColumnValues в session.CreateDateTime так:
var vStartDate:org.openntf.domino.DateTime = session.createDateTime(row.getColumnValues()[0])
но броски ошибки тоже.
Может ли кто-нибудь указать мне правильное направление? Я пробовал все варианты, о которых я могу думать!
P.S. Примеры в базе данных примеров OpenNTF Domino выглядят просто, но они используют только текущую системную дату, никогда не записываются в документы или просмотреть записи.
У вас есть 'org.openntf.domino.xsp = godmode' включен в приложении? Кроме того, стоит вывести '.getClass(). GetName()' на результат 'getColumnValues ()'. –
Да, у меня включен godmode. Я добавил несколько операторов печати для вывода '.getClass(). GetName()' и оба столбца возвращают 'lotus.domino.localDateTime' – Rob
Как насчет' row'? Это «NotesViewEntry» или «NotesXspViewEntry»? Возможно, вам понадобится получить backend 'NotesViewEntry', чтобы получить столбец как' org.openntf.domino.DateTime'. Это тот, который мы расширили, а не 'NotesXspViewEntry'. –