Сообщение об исключении getItemValueInteger - PullRequest
0 голосов
/ 20 марта 2019

OpenLogger выдает мне следующую ошибку:

Ошибка исключения языка интерпретации: метод NotesXspDocument.getItemValueInteger (число) не найден или недопустимые параметры - Ошибка в chkReview:

Интерпретация исключения

Ошибка: метод NotesXspDocument.getItemValueInteger (число) не найден или недопустимые параметры

Компонент chkReview имеет только 2 строки, где используется getItemValueInteger, который находится на onClickСобытие (одиночный флажок):

var reviewField:string = "numberOfReviewQuestions"+compositeData.reviewTeam;
var currentNumberReview = document1.getItemValueInteger(reviewField);   
var sectionReview:string = compositeData.section + compositeData.reviewTeam;    
var currentNumberSection = document1.getItemValueInteger(sectionReview);

CompositeData.reviewTeam и CompositeData.section возвращают строку.Поэтому я не уверен, есть ли у меня туннельное зрение или нет, однако я не вижу, что не так с моим кодом?Кто-нибудь может указать в правильном направлении?Проследите стэк ниже, если это поможет, и полный код onClick, спасибо:

try{
    var strCurrVal = getComponent('txtReviewSummary').getValue();
    var strNewVal ="";
    var strText ="";
    var dt = new Date();
    var strUser = userBean.getDisplayName();
    var reviewField:string = "numberOfReviewQuestions"+compositeData.reviewTeam;
    var currentNumberReview = document1.getItemValueInteger(reviewField);   
    var sectionReview:string = compositeData.section + compositeData.reviewTeam;    
    var currentNumberSection = document1.getItemValueInteger(sectionReview);

if (getComponent('chkReview').getValue() == "true") {
    // checkbox selected - do something
    var dateTimeFormat = new java.text.SimpleDateFormat("dd/MM/yyyy kk:mm");
    var dateTimeString = dateTimeFormat.format(dt);
    var strReview = " - [Review] - ("+dateTimeString+" - " + strUser + ")";
    strNewVal = strCurrVal+strReview;
    strText = "Review complete for " + compositeData.fieldName;
    document1.replaceItemValue(reviewField, currentNumberReview-1); 
} else {
    // checkbox not selected- do something else
    strNewVal = @Left(strCurrVal, " - [Review]");
    strText = "Removed review for " + compositeData.fieldName + ". Previous value was: " + strNewVal;
    document1.replaceItemValue(reviewField, currentNumberReview+1); 
}

var arrNotes:array = AddNoteItem(currentDocument, dt, strText, strUser);
document1.replaceItemValue(concatReviewSummary, strNewVal);
document1.save();

}catch(e){
    openLogBean.addError(e,this.getParent());
}


> com.ibm.jscript.InterpretException: Interpret exception at
> com.paulwithers.openLog.OpenLogErrorHolder.getInterpretException(OpenLogErrorHolder.java:114)
> at
> com.paulwithers.openLog.OpenLogErrorHolder.addError(OpenLogErrorHolder.java:216)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:90)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
> at java.lang.reflect.Method.invoke(Method.java:508) at
> com.ibm.jscript.types.JavaAccessObject.call(JavaAccessObject.java:322)
> at com.ibm.jscript.types.FBSObject.call(FBSObject.java:161) at
> com.ibm.jscript.ASTTree.ASTCall.interpret(ASTCall.java:197) at
> com.ibm.jscript.ASTTree.ASTTry.interpretCatch(ASTTry.java:150) at
> com.ibm.jscript.ASTTree.ASTTry.interpret(ASTTry.java:113) at
> com.ibm.jscript.ASTTree.ASTProgram.interpret(ASTProgram.java:119) at
> com.ibm.jscript.ASTTree.ASTProgram.interpretEx(ASTProgram.java:139) at
> com.ibm.jscript.JSExpression._interpretExpression(JSExpression.java:435)
> at com.ibm.jscript.JSExpression.access$1(JSExpression.java:424) at
> com.ibm.jscript.JSExpression$2.run(JSExpression.java:414) at
> java.security.AccessController.doPrivileged(AccessController.java:730)
> at
> com.ibm.jscript.JSExpression.interpretExpression(JSExpression.java:410)
> at com.ibm.jscript.JSExpression.evaluateValue(JSExpression.java:251)
> at com.ibm.jscript.JSExpression.evaluateValue(JSExpression.java:234)
> at
> com.ibm.xsp.javascript.JavaScriptInterpreter.interpret(JavaScriptInterpreter.java:222)
> at
> com.ibm.xsp.binding.javascript.JavaScriptMethodBinding.invoke(JavaScriptMethodBinding.java:111)
> at
> com.ibm.xsp.application.ActionListenerImpl.processAction(ActionListenerImpl.java:60)
> at javax.faces.component.UICommand.broadcast(UICommand.java:324) at
> com.ibm.xsp.component.UIEventHandler.broadcast(UIEventHandler.java:366)
> at
> com.ibm.xsp.component.UIDataPanelBase.broadcast(UIDataPanelBase.java:400)
> at
> com.ibm.xsp.component.UIDataPanelBase.broadcast(UIDataPanelBase.java:400)
> at
> com.ibm.xsp.component.UIDataPanelBase.broadcast(UIDataPanelBase.java:400)
> at
> com.ibm.xsp.component.UIDataPanelBase.broadcast(UIDataPanelBase.java:400)
> at
> com.ibm.xsp.component.UIDataPanelBase.broadcast(UIDataPanelBase.java:400)
> at
> com.ibm.xsp.component.UIViewRootEx.broadcast(UIViewRootEx.java:1535)
> at
> javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:307)
> at
> javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:428)
> at
> com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:94)
> at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:210)
> at
> com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:96)
> at
> com.ibm.xsp.controller.FacesControllerImpl.execute(FacesControllerImpl.java:256)
> at com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:227)
> at
> com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:157)
> at com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:159) at
> com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:138) at
> com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:103)
> at
> com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:588)
> at
> com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFComponentModule.java:1335)
> at
> com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:865)
> at
> com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:808)
> at
> com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:577)
> at
> com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:1319)
> at
> com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:662)
> at
> com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:482)
> at
> com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:357)
> at
> com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:313)
> at
> com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272)
> Caused by: java.lang.Throwable: Error:Method
> NotesXspDocument.getItemValueInteger(number) not found, or illegal
> parameters at
> com.paulwithers.openLog.OpenLogErrorHolder.getInterpretException(OpenLogErrorHolder.java:113)
> ... 52 more

Ответы [ 2 ]

1 голос
/ 20 марта 2019

Немного отличается от Пола (хотя он может быть и прав), среда выполнения XPage интерпретирует состав reviewField или sectionReview как число и пытается найти метод "getItemValueInteger", который запускается с использованием числового параметра.

Я бы сосредоточился на этом:

var sectionReview:string = compositeData.section + compositeData.reviewTeam;

поскольку другой, кажется, однозначно является String; хорошо помнить, что «: string» - это подсказки, но не контракты, поэтому, возможно, вы захотите привести композицию CompositeData.section и композитныйData.reviewTeam в строку, чтобы быть уверенным.

Пример:

var reviewField:string = "numberOfReviewQuestions"+compositeData.reviewTeam;
var currentNumberReview = document1.getItemValueInteger(@Text(reviewField));
var sectionReview:string = compositeData.section + compositeData.reviewTeam;    
var currentNumberSection = document1.getItemValueInteger(@Text(sectionReview));

Меня привлекает этот подход, так как для меня, когда CompositeData недоступен, я получаю исключения нулевого указателя, а не ошибки типа данных, в подобных структурах. Аналогично, если document1 недоступен или неинициализирован, ошибка, как правило, не является ошибкой вызова метода, но этот document1 является нулевым или не является объектом.

0 голосов
/ 20 марта 2019

Скорее всего, это проблема времени.Предположение неверно, что все на вашем XPage обрабатывается за один проход, поэтому, если он на XPage, он должен существовать.Переменная compositeData, вероятно, не была установлена ​​в то время, когда вы пытаетесь ее использовать.Подтвердите это, распечатав значение.Другой сценарий, менее вероятный, это document1, который еще не был инициализирован.Опять же, вы можете проверить это в своем коде, вызвав стандартный непараметрический метод (getNoteID() может работать).

...