我创建了一个重复控件。每当任何组件更新表单时,都会返回此运行时错误。
我知道我的帖子主要是代码,但我不知道我做错了什么。并且除了这行废话之外很难填写任何其他内容,否则StackOverflow不允许我发帖。
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)
以下是代码:
<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>
 <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 " +@Name("[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> 
<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 :(得分:0)
关键是要识别组件。 XPage OpenLog Logger应该这样做。
原因是在部分刷新期间,在applyRequestValues
阶段,它会尝试查询数据以进行重复控制。 (应用请求值阶段是指将浏览器中的值传递给组件的submittedValue
属性。此错误不表示它实际设置{{1一个组件,它意味着它查询组件树并解析组件的值绑定。)
当submittedValue
数据源有dominoView
时,我之前已经知道了dataView的详细方面。我不确定这是否属于这种情况,或者它是否受到您dataCache="id"
设置的影响,这意味着行不会在期间重新评估部分刷新。如果受影响的组件是只读的,则可以将repeatControls="true"
属性的计算值包装在value
中,因此在应用请求值阶段不会计算。
(我在IBM Connect and Engage上运行的会话中介绍了这一点。)