IBM Support

XPages' Partial Refresh runtime throws CLFAD* errors

Troubleshooting


Problem

Starting with V10, the XPages runtime throws CLFAD* errors when an invalid control id (i.e. ajaxid) is encountered instead of showing a blank page or re-displaying the page. 

Symptom

Example: page1.xsp

xpage
The Xpage application has the following components:
    A. Button : Update Panel1
    B. Link 1 : page1 $$ajaxid #id:Panel1
    C. Link 2 : page1 $$ajaxid nonexisting_control_id
    D. Panel  : panel1
    
The "Update Panel1" button refreshes the content of the "panel1" with the current time.
The "Link 1" has the proper ajaxid for "panel1" and opens a link with content of "panel1" without any exception.
The "Link 2" is the link with an invalid ajaxid and throws the HTTP 500 error.
 
Source:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
    <xp:br></xp:br>
    Content of Page1
    <xp:br></xp:br>
    <xp:br></xp:br>
    <xp:br></xp:br>
    <xp:button value="Update Panel1" id="button1">
        <xp:eventHandler event="onclick" submit="true"
            refreshMode="partial" refreshId="panel1">
        </xp:eventHandler>
    </xp:button>
    <xp:br></xp:br>
    <xp:br></xp:br>link1:&#160;
    <xp:link escape="true" text="page1 $$ajaxid #id:Panel1" id="link1"
        value="/page1.xsp">
        <xp:this.parameters>
            <xp:parameter name="$$ajaxid" value="#{id:panel1}"></xp:parameter>
        </xp:this.parameters>
    </xp:link>
    <xp:br></xp:br>
    <xp:br></xp:br>link2:&#160;
    <xp:link escape="true" text="page1 $$ajaxid nonexisting_control_id"
        id="link2" value="/page1.xsp">
        <xp:this.parameters>
            <xp:parameter name="$$ajaxid"
                value="nonexisting_control_id">
            </xp:parameter>
        </xp:this.parameters>
    </xp:link>
    <xp:br></xp:br>
    <xp:br></xp:br>
    <xp:panel id="panel1" style="border-color:rgb(0,128,255);border-style:solid;border-width:thick">
 content of panel1:&#160;
            <xp:text escape="true" id="computedField1"
            value="#{javascript:@Now()}">
            <xp:this.converter>
                <xp:convertDateTime type="time"></xp:convertDateTime>
            </xp:this.converter>
        </xp:text>
    </xp:panel>
    <xp:br></xp:br>
    <xp:br></xp:br>
</xp:view>

Steps to reproduce the error:
1. Launch the Xpage on the browser: http://hostname/invalid_ajax_id.nsf/page1.xsp
2. Click Link 1 to open the panel1 without any error.
3. Click Link 2 to produce the following stack trace.

Unexpected runtime error
The runtime has encountered an unexpected error.
Error source
Page Name: /page1.xsp
Exception
com.ibm.xsp.FacesExceptionEx2: CLFAD0376E: No component found with ID $$ajaxid=nonexisting_control_id to handle the partial page update.
    at com.ibm.xsp.component.UIViewRootEx.handleAjaxIdNotFound(UIViewRootEx.java:1365)
    at com.ibm.xsp.component.UIViewRootEx._invokePartialRefresh(UIViewRootEx.java:1342)
    at com.ibm.xsp.component.UIViewRootEx2._invokePartialRefresh(UIViewRootEx2.java:132)
    at com.ibm.xsp.component.UIViewRootEx._renderView(UIViewRootEx.java:1312)
    at com.ibm.xsp.component.UIViewRootEx.renderView(UIViewRootEx.java:1258)
    at com.ibm.xsp.application.ViewHandlerExImpl.doRender(ViewHandlerExImpl.java:757)
    at com.ibm.xsp.application.ViewHandlerExImpl._renderView(ViewHandlerExImpl.java:323)
    at com.ibm.xsp.application.ViewHandlerExImpl.renderView(ViewHandlerExImpl.java:338)
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:103)
    at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:210)
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:120)
    at com.ibm.xsp.controller.FacesControllerImpl.render(FacesControllerImpl.java:270)
    at com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:269)
    at com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:157)
    at com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:163)
    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:600)
    at com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFComponentModule.java:1351)
    at com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:877)
    at com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:820)
    at com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:589)
    at com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:1335)
    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)


Cause

To improve security, the XPages runtime behavior has been changed as of v10.0. In the old behavior, a blank page was shown and an HTTP status  "200 OK" was sent when an invalid control id was encountered. The new behavior is to throw an error, and the error number depends on the control id which was found to be invalid.  


Resolving The Problem


If a developer is unable to address the error by updating an application, this new XPages runtime error handling behavior can be reverted back to pre-V10 behavior by setting xsp.error.disable.detection.set01=true in Xpage properties (xsp.properties). This will  disable all of the CLFAD* errors, which can range from 375 to 381.

There are also individual options controlling disabling of each of the error handlers:
xsp.error.disable.0376=true
xsp.error.disable.0377=true
xsp.error.disable.0378=true
xsp.error.disable.0379=true
xsp.error.disable.0380=true
xsp.error.disable.0381=true

Setting any of them to true will revert back to the old behavior of giving a blank page or re-displaying the page.

Product Alias/Synonym

Domino

Document information

More support for: IBM Domino

Component: XPages

Software version: Domino V10 and higher

Operating system(s): AIX, Linux, Windows

Reference #: 0871610

Modified date: 18 March 2019