Xpages - Как мне найти идентификатор компонента на моей странице? - PullRequest
0 голосов
/ 13 декабря 2018

Я получаю много ошибок в моей базе данных openLog:

Ошибка исключения интерпретации языка выражений: не найден «ComdData» - Ошибка _id773:

Ошибка интерпретации

Ошибка: «составные данные» не найдены

Несколько раз, каждый раз с другим идентификатором.Если я просматриваю источник и ищу какой-либо из идентификаторов, я нигде не могу их найти ... У меня теперь туннельное зрение!Есть что-нибудь, что выскакивает, чтобы дать подсказку в направлении?Я полагаю, что это ошибка, потому что я ссылаюсь на свойство CompositeData где-то, что не существует, но у меня так много настраиваемых свойств с множеством настраиваемых элементов управления, поэтому мне сложно их точно определить.Даже если кто-то может видеть в стеке трассировку типа поля или что-то еще, это поможет мне сузить его.Спасибо

Трассировка стека:

Трассировка стека com.ibm.jscript.InterpretException: интерпретировать исключение в com.paulwithers.openLog.OpenLogErrorHolder.getInterpretException (OpenLogErrorHolder.Java: 114) в com.paulwithers.openLog.OpenLogErrorHolder.addError (OpenLogErrorHolder.java:216) в sun.reflect.GeneratedMethodAccessor35.invoke (Неизвестный источник) в sun.reflect.DelegatingMethodava.lang.reflect.Method.invoke (Method.java:508) в com.ibm.jscript.types.JavaAccessObject.call (JavaAccessObject.java:322) в com.ibm.jscript.types.FBSObject.call (FBSObject.java: 161) в com.ibm.jscript.ASTTree.ASTCall.interpret (ASTCall.java:197) в com.ibm.jscript.ASTTree.ASTTry.interpretCatch (ASTTry.java:150) в com.ibm.jscript.ASTTree.ASTTry.interpret (ASTTry.java:113) в com.ibm.jscript.ASTTree.ASTProgram.interpret (ASTProgram.java:119) в com.ibm.jscript.ASTTree.ASTProgram.interpretEx (ASTProgram.java:139) в com.ibm.jscript.JSExpression._interpretExpression (JSExpression.java:435) в com.ibm.jscript.JSExpression.access $ 1 (JSExpression.java:424) в com.ibm.jscript.JSExpression $ 2.run (JSExpression.java:414) в java.security.AccessController.doPrivileged (AccessController.java:686) по адресу com.ibm.jscript.JSExpression.interpretExpression (JSExpression.java:410) по адресу com.ibm.jscript.JSExpression.evaluateValue (JSExpression.java:m. 1)jscript.JSExpression.evaluateValue (JSExpression.java:234) в com.ibm.xsp.javascript.JavaScriptInterpreter.interpret (JavaScriptInterpreter.java:222) в com.ibm.xsp.javascript.JavaScriptInterpreter.interpret (JavaScriptInterter): JavaScriptInterterв com.ibm.xsp.binding.javascript.JavaScriptValueBinding.getValue (JavaScriptValueBinding.java:78) в com.ibm.xsp.component.xp.XspOutputLabel.getFor (XspOutputLabel.java:158) в sun.reflect.hoke25(Неизвестный источник) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:55) в java.lang.reflect.Method.invoke (Method.java:508) в javax.faces.component.UIComponentBase $ AttributesMap.put (UIComponentBase.java:1863) в com.ibm.xsp.stylekit.StyleKitImpl.applyProperties (StyleKitImpl.java:39).ibm.xsp.stylekit.StyleKitImpl..java: 203) в com.ibm.xsp.stylekit.StyleKitImpl._applyStyles (StyleKitImpl.java:203) в com.ibm.xsp.stylekit.StyleKitImpl._applyStyles (StyleKitImpl.java:203) в com.mibm.stylekit.StyleKitImpl._applyStyles (StyleKitImpl.java:203) в com.ibm.xsp.stylekit.StyleKitImpl._applyStyles (StyleKitImpl.java:203) в com.ibm.xsp.stylekit.StyleKitIjImpl.в com.ibm.xsp.stylekit.StyleKitImpl._applyStyles (StyleKitImpl.java:203) в com.ibm.xsp.stylekit.StyleKitImpl._applyStyles (StyleKitImpl.java:203) в com.ibm.xsp.StyleLitIitly(StyleKitImpl.java:203) вcom.ibm.xsp.stylekit.StyleKitImpl._applyStyles (StyleKitImpl.java:203) в com.ibm.xsp.stylekit.StyleKitImpl._applyStyles (StyleKitImpl.java:203) в com.ibm.xsp.stilekitStyleKitImpl.java:203) в com.ibm.xsp.stylekit.StyleKitImpl._applyStyles (StyleKitImpl.java:203) в com.ibm.xsp.stylekit.StyleKitImpl._applyStyles (StyleKitImpl.java.mib:20).stylekit.StyleKitImpl.) в com.ibm.xsp.stylekit.StyleKitImpl._applyStyles (StyleKitImpl.java:203) в com.ibm.xsp.stylekit.StyleKitImpl._applyStyles (StyleKitImpl.java:203) в com.ibm.xsp.KStyle.yleapplyStyles (StyleKitImpl.java:192) в com.ibm.xsp.application.ViewHandlerEx.applyStyles (ViewHandlerEx.java:137) в com.ibm.xsp.application.ViewHandlerEx.createView (ViewHandlerEx.java:93) в com.ibm.xsp.webapp.FacesServlet.serviceView (FacesServlet.java:250) в com.ibm.xsp.webapp.FacesServletEx.serviceView (FacesServletEx.java:157) в com.ibm.xsp.webapp.FacesServlet.service (FacesServlet.java:159) в com.ibm.sp.webapp.FacesServletEx.service (FacesServletEx.java:138) в com.ibm.xsp.webapp.DesignerFacesServlet.service (DesignerFacesServlet.java:103) в com.ibm.designer.runtime.domino.adapMervomlet.java: 588) по адресу com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet (NSFComponentModule.java:1335) по адресу com.ibm.designer.runtime.domino.adapter.ComponentModule $ AdapterInvo.let.java: 865) в com.ibm.designer.runtime.domino.adapter.ComponentModule $ ServletInvoker.doService (ComponentModule.java:808) в com.ibm.designer.runtime.domino.adapter.ComponentModule.doService (ComponentModule.java)) на com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService (NSFComponentModule.java:1319) на com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal (NSFService.java:662) на com.ibm.domino.xsp.module.nsf.NSFService.doService (NSFService.java:482) на com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService (LCDEnvironment.java:357) на ком.ibm.designer.runtime.domino.adapter.LCDEnvironment.service (LCDEnvironment.java:313) в com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service (XspCmdManager.java:272). Причина: java.lang.Throwable: Ошибка: «ComboData» не найден в com.paulwithers.openLog.OpenLogErrorHolder.getInterpretException (OpenLogErrorHolder.java:113) ... еще 67

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

В следующий раз вы можете сделать следующее:

Создать Java-класс "JavaScriptDebugBindingFactory"

package ch.hasselba.xpages;

import com.ibm.xsp.binding.BindingFactory;
import com.ibm.xsp.util.ValueBindingUtil;
import javax.faces.application.Application;
import javax.faces.el.MethodBinding;
import javax.faces.el.ValueBinding;

public class JavaScriptDebugBindingFactory implements BindingFactory {
    public static final String JAVASCRIPT = "javascript";

    public String getPrefix() {
        return "javascript";
    }

    public MethodBinding createMethodBinding(Application app, String str,
            Class[] arr) {
        String tmpStr = ValueBindingUtil.parseSimpleExpression(str);
        return new JavaScriptDebugMethodBinding(tmpStr, arr);
    }

    public ValueBinding createValueBinding(Application app, String str) {
        String tmpSttr = ValueBindingUtil.parseSimpleExpression(str);
        return new JavaScriptDebugValueBinding(tmpStr);
    }
}

Добавить класс MethodBinding

package ch.hasselba.xpages;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.el.EvaluationException;
import javax.faces.el.MethodNotFoundException;

import com.ibm.xsp.binding.javascript.JavaScriptMethodBinding;
import com.ibm.xsp.exception.EvaluationExceptionEx;

public class JavaScriptDebugMethodBinding extends JavaScriptMethodBinding {

    public JavaScriptDebugMethodBinding() {
        super(null, null);
    }

    public JavaScriptDebugMethodBinding(String str,
            Class[] arr) {
        super(str, arr);
    }

    public Object invoke(FacesContext fc, Object[] obj)
            throws EvaluationException, MethodNotFoundException {
        UIComponent cmp = getComponent();
        try {
            return super.invoke(fc, obj);
        } catch (EvaluationExceptionEx e) {
            System.out.println("COMPONENT: " + cmp.getId());
            throw e;
        }
    }
}

Добавить класс JavaScriptDebugValueBinding

package ch.hasselba.xpages;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.el.EvaluationException;
import javax.faces.el.PropertyNotFoundException;

import com.ibm.xsp.binding.javascript.JavaScriptValueBinding;
import com.ibm.xsp.exception.EvaluationExceptionEx;

public class JavaScriptDebugValueBinding extends JavaScriptValueBinding {

    public JavaScriptDebugValueBinding() {
        super();
    }

    public JavaScriptDebugValueBinding(String str) {
        super(str);
    }

    public Object getValue(FacesContext fc) throws EvaluationException,
            PropertyNotFoundException {
        UIComponent cmp = getComponent();
        try {
            return super.getValue(fc);
        } catch (EvaluationExceptionEx e) {
            System.out.println("COMPONENT: " + cmp.getId());
            throw e;

        }
    }
}

Перезаписать обработчик JavaScript в beforePageLoad

<xp:this.beforePageLoad>
    <![CDATA[#{javascript:
        importPackage( ch.hasselba.xpages );
        var facts = facesContext.getApplication().getFactoryLookup();
        facts.setFactory("javascript", new ch.hasselba.xpages.JavaScriptDebugBindingFactory())

    }]]>
</xp:this.beforePageLoad>

Когдаoocurs error, идентификатор компонента выводится на консоль сервера.

0 голосов
/ 14 декабря 2018

Как говорит Свен, проверяется строка, включающая com.ibm.xsp.component, в данном случае com.ibm.xsp.component.xp.XspOutputLabel.getFor(XspOutputLabel.java:158) at.Это на самом деле должно дать вам много информации, чтобы решить проблему.XspOutputLabel означает, что это компонент метки - посмотрите на встроенные классы Java в Package Explorer в папке local, и вы увидите, какие классы Java создаются для XPage (выберите простой XPage!).Бит get.... также сообщает вам, для какого свойства вызывается ошибка, в этом случае getFor означает, что это свойство for.Ошибка говорит, что в вычислении не удается установить compositeData.Так что ищите Label, который имеет вычисленное for свойство, которое использует compositeData.

Как правило, если вы получаете неопределенное «_id ....», это означает, что компонент не имеетid атрибут установлен, поэтому просто <xp:label value="My Label"></xp:label> вместо <xp:label id="myLabel" value="My Label"></xp:label>.

...