• Dynamic View Panel - onColumnClick

    By Johnny Haugen Sørgård 1 decade ago

     

    Trying to open a Dialog by writing code in "onColumnClick" results in error. Here's the code for the dynamicViewPanel

    <xe:dynamicViewPanel id="dynamicViewPanel1" var="rowML">
    
    <xe:this.data>
    
    <xp:dominoView var="view1" viewName="(microLoggDato)">
    
    </xp:dominoView>
    
    </xe:this.data>
    
    <xp:eventHandler event="onColumnClick" submit="true"
    
    refreshMode="complete">
    
    <xe:this.action><![CDATA[#{javascript:viewScope.put("MLid", rowML.getUniversalID());
    
    getComponent("dialogML").show();}]]></xe:this.action>
    
    </xp:eventHandler>
    
    </xe:dynamicViewPanel>
    

     

    Here's an example of the same view using viewPanel. (This code works)

     

    <xp:viewPanel rows="30" id="viewPanel1" var="radML">
    
    <xp:this.facets>
    
    <xp:pager partialRefresh="true"
    
    layout="Previous Group Next" xp:key="headerPager" id="pager1">
    
    </xp:pager>
    
    </xp:this.facets>
    
    <xp:this.data>
    
    <xp:dominoView var="viewML" viewName="(microLoggDato)"
    
    >
    
    </xp:dominoView>
    
    </xp:this.data>
    
    <xp:viewColumn columnName="DatoDT" id="viewColumn1" displayAs="link">
    
    <xp:this.converter>
    
    <xp:convertDateTime type="date" dateStyle="short"></xp:convertDateTime>
    
    </xp:this.converter>
    
    <xp:viewColumnHeader value="Dato"
    
    id="viewColumnHeader1">
    
    </xp:viewColumnHeader>
    
    <xp:eventHandler event="onclick" submit="true"
    
    refreshMode="complete">
    
    <xp:this.action><![CDATA[#{javascript:viewScope.put("MLid", radML.getUniversalID());
    
    getComponent("dialogML").show();}]]></xp:this.action>
    
    </xp:eventHandler></xp:viewColumn>
    
    <xp:viewColumn columnName="TypeTX" id="viewColumn2">
    
    <xp:viewColumnHeader value="Type"
    
    id="viewColumnHeader2">
    
    </xp:viewColumnHeader>
    
    </xp:viewColumn>
    
    <xp:viewColumn columnName="LoggTX" id="viewColumn3">
    
    <xp:viewColumnHeader value="Logg"
    
    id="viewColumnHeader3">
    
    </xp:viewColumnHeader>
    
    </xp:viewColumn>
    
    <xp:viewColumn id="viewColumn4" columnName="ForfatterTX">
    
    <xp:viewColumnHeader id="viewColumnHeader4"
    
    value="Forfatter">
    
    </xp:viewColumnHeader>
    
    </xp:viewColumn>
    
    </xp:viewPanel>
    
     
    

    Here's the error message as displayed in the browser.

     

    Unexpected runtime error

    The runtime has encountered an unexpected error.


    Error source

    Page Name:/MicroLogg.xsp




    Exception

    Error while executing JavaScript action expression


    Expression

       1: #{javascript://viewScope.put("MLid", rowML.getUniversalID());
       2: getComponent("dialogML").show();}
    

     

    ▼ Stack Trace

    javax.faces.FacesException: Error while executing JavaScript action expression
        com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:102)
        com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:210)
        com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:96)
        com.ibm.xsp.controller.FacesControllerImpl.execute(FacesControllerImpl.java:250)
        com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:223)
        com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:200)
        com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:160)
        com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:137)
        com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:103)
        com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:576)
        com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFComponentModule.java:1267)
        com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:847)
        com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:796)
        com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:565)
        com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:1251)
        com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:598)
        com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:421)
        com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:341)
        com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:297)
        com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272)
    com.ibm.xsp.exception.EvaluationExceptionEx: Error while executing JavaScript action expression
        com.ibm.xsp.binding.javascript.JavaScriptMethodBinding.invoke(JavaScriptMethodBinding.java:126)
        com.ibm.xsp.application.ActionListenerImpl.processAction(ActionListenerImpl.java:60)
        javax.faces.component.UICommand.broadcast(UICommand.java:324)
        com.ibm.xsp.component.UIEventHandler.broadcast(UIEventHandler.java:366)
        com.ibm.xsp.component.UIDataEx.broadcast(UIDataEx.java:619)
        javax.faces.component.UIData.broadcast(UIData.java:762)
        com.ibm.xsp.component.UIDataEx.broadcast(UIDataEx.java:627)
        com.ibm.xsp.component.UIDataPanelBase.broadcast(UIDataPanelBase.java:400)
        com.ibm.xsp.component.UIDataPanelBase.broadcast(UIDataPanelBase.java:400)
        com.ibm.xsp.component.UIDataPanelBase.broadcast(UIDataPanelBase.java:400)
        com.ibm.xsp.extlib.component.layout.UIVarPublisherBase.broadcast(UIVarPublisherBase.java:183)
        com.ibm.xsp.component.UIDataPanelBase.broadcast(UIDataPanelBase.java:400)
        com.ibm.xsp.component.UIDataPanelBase.broadcast(UIDataPanelBase.java:400)
        com.ibm.xsp.component.UIViewRootEx.broadcast(UIViewRootEx.java:1535)
        javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:307)
        javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:428)
        com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:94)
        com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:210)
        com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:96)
        com.ibm.xsp.controller.FacesControllerImpl.execute(FacesControllerImpl.java:250)
        com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:223)
        com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:200)
        com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:160)
        com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:137)
        com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:103)
        com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:576)
        com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFComponentModule.java:1267)
        com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:847)
        com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:796)
        com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:565)
        com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:1251)
        com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:598)
        com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:421)
        com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:341)
        com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:297)
        com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272)
    java.lang.NullPointerException
        com.ibm.jscript.ASTTree.ASTMember.interpret(ASTMember.java:151)
        com.ibm.jscript.ASTTree.ASTCall.interpret(ASTCall.java:88)
        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:284)
        com.ibm.jscript.JSExpression.interpretExpression(JSExpression.java:410)
        com.ibm.jscript.JSExpression.evaluateValue(JSExpression.java:251)
        com.ibm.jscript.JSExpression.evaluateValue(JSExpression.java:234)
        com.ibm.xsp.javascript.JavaScriptInterpreter.interpret(JavaScriptInterpreter.java:221)
        com.ibm.xsp.binding.javascript.JavaScriptMethodBinding.invoke(JavaScriptMethodBinding.java:111)
        com.ibm.xsp.application.ActionListenerImpl.processAction(ActionListenerImpl.java:60)
        javax.faces.component.UICommand.broadcast(UICommand.java:324)
        com.ibm.xsp.component.UIEventHandler.broadcast(UIEventHandler.java:366)
        com.ibm.xsp.component.UIDataEx.broadcast(UIDataEx.java:619)
        javax.faces.component.UIData.broadcast(UIData.java:762)
        com.ibm.xsp.component.UIDataEx.broadcast(UIDataEx.java:627)
        com.ibm.xsp.component.UIDataPanelBase.broadcast(UIDataPanelBase.java:400)
        com.ibm.xsp.component.UIDataPanelBase.broadcast(UIDataPanelBase.java:400)
        com.ibm.xsp.component.UIDataPanelBase.broadcast(UIDataPanelBase.java:400)
        com.ibm.xsp.extlib.component.layout.UIVarPublisherBase.broadcast(UIVarPublisherBase.java:183)
        com.ibm.xsp.component.UIDataPanelBase.broadcast(UIDataPanelBase.java:400)
        com.ibm.xsp.component.UIDataPanelBase.broadcast(UIDataPanelBase.java:400)
        com.ibm.xsp.component.UIViewRootEx.broadcast(UIViewRootEx.java:1535)
        javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:307)
        javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:428)
        com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:94)
        com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:210)
        com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:96)
        com.ibm.xsp.controller.FacesControllerImpl.execute(FacesControllerImpl.java:250)
        com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:223)
        com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:200)
        com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:160)
        com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:137)
        com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:103)
        com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:576)
        com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFComponentModule.java:1267)
        com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:847)
        com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:796)
        com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:565)
        com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:1251)
        com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:598)
        com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:421)
        com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:341)
        com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:297)
        com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272)
    
    
    Johnny
     
    
    • Not reproducible

      By Philippe Riand 1 decade ago

      The issue with the ASTMember NPE is suspect, but I can't reproduce it. Please send me something  that shows the error with the demo DB.

      I tried this with the demo DB, and it worked:

       

      <?xml version="1.0" encoding="UTF-8"?>
      
      <xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex" xmlns:xc="http://www.ibm.com/xsp/custom">
      
       
      
      <xe:dynamicViewPanel rows="10" id="dynamicViewPanel2" var="viewEntry" role="presentation">
      
      <xe:this.facets>
      
      <xp:pager partialRefresh="true" layout="Previous Group Next" xp:key="headerPager" id="pager2">
      
      </xp:pager>
      
      </xe:this.facets>
      
      <xe:this.data>
      
      <xp:dominoView var="view1" viewName="AllContacts">
      
      </xp:dominoView>
      
      </xe:this.data>
      
      <xp:eventHandler event="onColumnClick" submit="true" refreshMode="complete">
      
      <xe:this.action><![CDATA[#{javascript:viewScope.myid = viewEntry.getUniversalID()
      
      getComponent("dialog").show();}]]></xe:this.action>
      
      </xp:eventHandler>
      
      </xe:dynamicViewPanel>
      
       
      
      <xe:dialog id="dialog" title="My dialog">
      
      <xe:dialogContent>
      
      Hey, I'm a dialog, id=
      
      <xp:text escape="true" id="computedField1" value="#{javascript:viewScope.myid}"></xp:text>
      
      </xe:dialogContent>
      
      </xe:dialog>
      
       
      
      </xp:view>
      

       

      • Found the Property to reproduce the error

        By Johnny Haugen Sørgård 1 decade ago

        I did make an xpage in the demo database and as you stated - no problem.

         

        Then isolated the module in a new database. No problem. When comparing the two(three) databases I found that one application Property made the whole difference:

        - Server page persistence:

          * Keep pages on disk --> no problem

          * Keep pages in memory --> error

         

        Johnny