2016-04-08 5 views
0

Ich habe eine Wiederholungskontrolle erstellen. Immer wenn Komponenten das Formular aktualisieren, wird dieser Laufzeitfehler zurückgegeben.Laufzeitfehler nach der Aktualisierung mit Wiederholungskontrolle

Ich weiß, dass mein Beitrag hauptsächlich Code ist, aber ich habe keine Ahnung, was ich falsch gemacht habe. Und es ist schwer, etwas anderes als diese Art von Unsinn zu füllen, sonst lässt mich StackOverflow nicht posten.

javax.faces.FacesException 
    com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:106) 
    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:256) 
    com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:228) 
    com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:157) 
    com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:160) 
    com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:138) 
    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:1335) 
    com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:853) 
    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: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) 
    com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:313) 
    com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272) 
java.lang.IllegalArgumentException 
    javax.faces.model.ListDataModel.getRowData(ListDataModel.java:141) 
    com.ibm.xsp.component.UIRepeatContainer.addIndexedDataContext(UIRepeatContainer.java:173) 
    com.ibm.xsp.component.UIRepeatContainer.getDataContexts(UIRepeatContainer.java:86) 
    com.ibm.xsp.util.DataPublisher.getDataContextList(DataPublisher.java:349) 
    com.ibm.xsp.util.DataPublisher.revokeControlData(DataPublisher.java:271) 
    com.ibm.xsp.component.UIDataPanelBase.revokeControlData(UIDataPanelBase.java:319) 
    com.ibm.xsp.component.UIDataPanelBase.processDecodes(UIDataPanelBase.java:334) 
    javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) 
    com.ibm.xsp.component.UIRepeat.processDecodes(UIRepeat.java:526) 
    javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) 
    com.ibm.xsp.component.UIDataPanelBase.processDecodes(UIDataPanelBase.java:331) 
    javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) 
    javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) 
    javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) 
    com.ibm.xsp.extlib.component.layout.UIVarPublisherBase.processDecodes(UIVarPublisherBase.java:123) 
    javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) 
    com.ibm.xsp.component.UIDataPanelBase.processDecodes(UIDataPanelBase.java:331) 
    javax.faces.component.UIForm.processDecodes(UIForm.java:166) 
    javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) 
    javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1177) 
    javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:343) 
    com.ibm.xsp.component.UIViewRootEx._processDecodes(UIViewRootEx.java:1438) 
    com.ibm.xsp.component.UIViewRootEx.processDecodes(UIViewRootEx.java:1399) 
    com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:98) 
    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:256) 
    com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:228) 
    com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:157) 
    com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:160) 
    com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:138) 
    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:1335) 
    com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:853) 
    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: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) 
    com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:313) 
    com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272) 

Und hier ist der Code:

<xp:repeat id="repeatApproveForward" repeatControls="true" 
     var="repeat_row" indexVar="repeat_index"> 
     <xp:this.value><![CDATA[#{javascript:getComponent("ccAprForwardStateArray").getValue();}]]></xp:this.value> 
     <xp:panel> 
      <xp:this.rendered><![CDATA[#{javascript:currentDocument.isEditable() && compositeData.debug}]]></xp:this.rendered> 
      <xp:br></xp:br> 
      # 
      <xp:text escape="true" id="ccAprForwardCount" 
       value="#{javascript:repeat_index}" style="font-weight:bold"> 
       <xp:this.converter> 
        <xp:convertNumber type="number" 
         integerOnly="true"> 
        </xp:convertNumber> 
       </xp:this.converter> 
      </xp:text> 
      <xp:br></xp:br> 
      <xp:span style="font-weight:bold">Status:</xp:span> 
        
      <xp:text escape="true" id="ccAprForwardStatus"> 
       <xp:this.value><![CDATA[#{javascript:repeat_row[0]}]]></xp:this.value> 
      </xp:text> 
      <xp:br></xp:br> 
      <xp:span style="font-weight:bold">StatusDesc:</xp:span> 
        
      <xp:text escape="true" id="ccAprForwardStatusDesc"> 
       <xp:this.value><![CDATA[#{javascript:repeat_row[1]}]]></xp:this.value> 
      </xp:text> 
      <xp:br></xp:br> 
      <xp:span style="font-weight:bold">Approver:</xp:span> 
        
      <xp:text escape="true" id="ccAprForwardApprover"> 
       <xp:this.value><![CDATA[#{javascript:repeat_row[2]}]]></xp:this.value> 
      </xp:text> 
      <xp:br></xp:br> 
      <xp:span style="font-weight:bold">Condition:</xp:span> 
        
      <xp:text escape="true" id="ccAprForwardCondition"> 

       <xp:this.value><![CDATA[#{javascript:repeat_row[3]}]]></xp:this.value> 
      </xp:text> 
      <xp:br></xp:br> 
      <xp:span style="font-weight:bold"> 
       MailNotification: 
      </xp:span> 
        
      <xp:text escape="true" id="ccAprForwardMail"> 

       <xp:this.value><![CDATA[#{javascript:repeat_row[4]}]]></xp:this.value> 
      </xp:text> 
      <xp:br></xp:br> 
      <xp:span style="font-weight:bold"> 
       MailTimeOutNotification 
      </xp:span> 
      <xp:span style="font-weight:bold">:</xp:span> 
        
      <xp:text escape="true" id="ccAprForwardTimeOutMail"> 

       <xp:this.value><![CDATA[#{javascript:repeat_row[5]}]]></xp:this.value> 
      </xp:text> 
      <xp:br></xp:br> 
      <xp:span style="font-weight:bold">EventSubject</xp:span> 
      <xp:span style="font-weight:bold">:</xp:span> 
        
      <xp:text escape="true" id="ccAprForwardEventSubject"> 

       <xp:this.value><![CDATA[#{javascript:repeat_row[6]}]]></xp:this.value> 
      </xp:text> 
      <xp:br></xp:br> 
     </xp:panel> 
     <xp:span style="font-weight:bold"></xp:span> 
     <xp:button id="btnApproveForward" 
      styleClass="btn btn-sm btn-success"> 
      <xp:this.value><![CDATA[#{javascript:getComponent("ccAprForwardStatusDesc").getValue();}]]></xp:this.value> 

      <xp:this.rendered><![CDATA[#{javascript:viewScope.isShowAprNote != "1" 
&& getComponent("ccAprForwardCondition").getValue() 
&& getComponent("ccAprUserCondition").getValue();}]]></xp:this.rendered> 
      <xp:span styleClass="glyphicon glyphicon-thumbs-up"></xp:span> 




     <xp:eventHandler event="onclick" submit="true" refreshMode="complete"> 
      <xp:this.action> 
       <xp:actionGroup> 
        <xp:this.condition><![CDATA[#{javascript:if (!repeat_row[4] | @Trim([repeat_row[2]]) == "") 
{false}else{true}}]]></xp:this.condition> 
        <xp:executeScript> 
         <xp:this.script><![CDATA[#{javascript:viewScope.isShowAprNote = "1" 
viewScope.isShowRejNote = ""}]]></xp:this.script> 
        </xp:executeScript> 

        <xp:modifyField name="Status" 
         var="currentDocument"> 

         <xp:this.value><![CDATA[#{javascript:repeat_row[0]}]]></xp:this.value> 
        </xp:modifyField> 
        <xp:modifyField name="StatusDesc" 
         var="currentDocument"> 
         <xp:this.value><![CDATA[#{javascript:repeat_row[1]}]]></xp:this.value> 
        </xp:modifyField> 
        <xp:modifyField name="ApproveGroup" 
         var="currentDocument"> 
         <xp:this.value><![CDATA[#{javascript:repeat_row[2]}]]></xp:this.value> 
        </xp:modifyField> 
        <xp:modifyField name="EventSubject" 
         var="currentDocument"> 
         <xp:this.value><![CDATA[#{javascript:repeat_row[6]}]]></xp:this.value> 
        </xp:modifyField> 

       </xp:actionGroup> 
      </xp:this.action></xp:eventHandler></xp:button> 
    </xp:repeat> 

    <xp:panel id="panelAprNote" > 
     <xp:this.rendered><![CDATA[#{javascript:viewScope.get("isShowAprNote") == "1" && viewScope.get("isShowRejNote") != "1"}]]></xp:this.rendered> 
     <xp:inputText id="txtAprApproverNote" 
      dojoType="dijit.form.TextBox" value="#{viewScope.AprApproverNote}"> 
      <xp:this.dojoAttributes> 
       <xp:dojoAttribute name="placeholder" 
        value="Notunuzu giriniz"> 

       </xp:dojoAttribute> 
      </xp:this.dojoAttributes> 
     </xp:inputText> 

     &#160;<xp:button value="Gönder" id="button4" styleClass="btn btn-sm btn-success"> 



      <xp:eventHandler event="onclick" submit="true" refreshMode="complete"> 
       <xp:this.action> 

        <xp:actionGroup> 

         <xp:modifyField name="ApproverNote" var="currentDocument" value="#{javascript:viewScope.AprApproverNote}"> 

         </xp:modifyField> 

         <xp:actionGroup> 




          <xp:executeScript> 
           <xp:this.script><![CDATA[#{javascript:currentDocument.getDocument().getFirstItem("ApprovalHistory").appendToTextList(@Text(@Now())+" Tarihinde " [email protected]("[CN]",session.getEffectiveUserName()) + " Onayladı. :") & currentDocument.ApproverNote(0)}]]></xp:this.script> 
          </xp:executeScript> 
          <xp:executeScript> 
           <xp:this.script><![CDATA[#{javascript:var URL = facesContext.getExternalContext().getRequest().getRequestURL(); 
var notesLink = currentDocument.getDocument().getNotesURL(); 

var vHtml = '"Aşağıda linki bulunan döküman onayınıza gönderilmiştir. Bu bir bilgilendirme mailidir."<br></br><br></br><a href="'+notesLink+'">Onayınızdaki Dökümana Notes Uygulaması Üzerinden Ulaşmak İçin Tıklayınız</a><br></br><br></br>"Yukarıdaki link açılmıyor ise aşağıdaki linki tıklayınız."<br></br><a href="' +URL+'?documentId=' + currentDocument.getDocument().getUniversalID() + '&action=openDocument">Onayınızdaki Dökümana Web Browser Üzerinden Ulaşmak İçin Tıklayınız</a>' 

var mail = new HTMLMail(); 
mail.setTo(currentDocument.getItemValue("ApproveGroup")); 
mail.setSubject("[ERP] Yapitasi " + currentDocument.getItemValue("Form") + " Onay Uyari Maili"); 
mail.addHTML(vHtml); 
mail.send();}]]></xp:this.script> 
          </xp:executeScript> 
         </xp:actionGroup> 
         <xp:saveDocument var="currentDocument"> 
         </xp:saveDocument> 



         <xp:openPage name="#{javascript:compositeData.view}"> 
         </xp:openPage> 





        </xp:actionGroup> 
       </xp:this.action> 
      </xp:eventHandler> 
     </xp:button>&#160; 
     <xp:button value="Cancel" id="button3" 
      styleClass="btn btn-default"> 

     <xp:eventHandler event="onclick" submit="true" refreshMode="complete"></xp:eventHandler></xp:button> 

    </xp:panel> 
+0

Die Fehlermeldung allein nicht ausreicht, um Ihnen zu helfen. Ich empfehle zwei Dinge: 1) Reduzieren Sie Ihren Code und Ihre Logik, um das Problem zu isolieren. 2) Neben der Fehlermeldung: posten Sie den XML-Markup-Code der Wiederholung/XPage sowie die Logik, die die Wiederholung aktualisiert. –

Antwort

0

Der Schlüssel Identifizierung der Komponente sein wird. XPages OpenLog Logger sollte das tun.

Die Ursache ist, dass während einer teilweisen Aktualisierung in der Phase applyRequestValues versucht wird, die Daten für Ihre Wiederholungssteuerung abzufragen. (Apply Request Values ​​Phase ist, wenn die Werte aus dem Browser an die Eigenschaft der Komponenten übergeben werden. Dieser Fehler bedeutet nicht bedeutet, dass es tatsächlich die submittedValue einer Komponente setzt, bedeutet es Abfragen der Komponentenstruktur und Auflösen der Komponenten 'Wert Bindings.)

Ich hatte dies zuvor mit der Detailfacette eines dataView, wenn die dominoView Datenquelle dataCache="id" hat. Ich bin mir nicht sicher, ob das hier der Fall ist oder ob es von Ihrer Einstellung repeatControls="true" betroffen ist, was bedeutet, dass die Zeilen bei einer teilweisen Aktualisierung nicht erneut ausgewertet werden. Wenn die betroffene Komponente schreibgeschützt ist, können Sie den berechneten Wert der value-Eigenschaft in if (view.isRenderingPhase()) {...} umbrechen. Daher wird sie während der Phase "Anforderungswerte übergeben" nicht berechnet.

(Dies wurde in der Sitzung, die ich bei IBM Connect lief abgedeckt und Engage.)