6 Replies Latest reply on Apr 29, 2011 3:20 PM by ben.maisano

    No component found to process as 'ajaxSingle'

    poesys

      A user is having an intermittent problem with a modal panel that has a data table, a done button, a delete button on each table row, and a close X icon in the header. The panel essentially stopped responding; clicking on the buttons did nothing. The user closed the page, logged out and in, and resumed with no problems. Here's what happened in the server log:

       

       

      2010-04-29 14:35:56,053 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-8) No component found to process as 'ajaxSingle' for clientId j_id162:doneExpression
      2010-04-29 14:35:56,100 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-8) No component found to process as 'ajaxSingle' for clientId j_id162:doneExpression
      2010-04-29 14:35:56,100 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-8) No component found to process as 'ajaxSingle' for clientId j_id162:doneExpression
      2010-04-29 14:35:59,682 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-6) No component found to process as 'ajaxSingle' for clientId j_id162:doneExpression
      2010-04-29 14:35:59,683 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-6) No component found to process as 'ajaxSingle' for clientId j_id162:doneExpression
      2010-04-29 14:35:59,683 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-6) No component found to process as 'ajaxSingle' for clientId j_id162:doneExpression
      2010-04-29 14:36:27,689 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-4) No component found to process as 'ajaxSingle' for clientId j_id162:expressionTable:0:deleteExpression
      2010-04-29 14:36:27,690 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-4) No component found to process as 'ajaxSingle' for clientId j_id162:expressionTable:0:deleteExpression
      2010-04-29 14:36:27,690 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-4) No component found to process as 'ajaxSingle' for clientId j_id162:expressionTable:0:deleteExpression
      2010-04-29 14:36:28,775 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-4) No component found to process as 'ajaxSingle' for clientId j_id162:expressionTable:0:deleteExpression
      2010-04-29 14:36:28,776 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-4) No component found to process as 'ajaxSingle' for clientId j_id162:expressionTable:0:deleteExpression
      2010-04-29 14:36:28,777 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-4) No component found to process as 'ajaxSingle' for clientId j_id162:expressionTable:0:deleteExpression
      2010-04-29 14:36:29,352 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-4) No component found to process as 'ajaxSingle' for clientId j_id162:expressionTable:0:deleteExpression
      2010-04-29 14:36:29,353 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-4) No component found to process as 'ajaxSingle' for clientId j_id162:expressionTable:0:deleteExpression
      2010-04-29 14:36:29,354 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-4) No component found to process as 'ajaxSingle' for clientId j_id162:expressionTable:0:deleteExpression
      2010-04-29 14:36:29,564 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-4) No component found to process as 'ajaxSingle' for clientId j_id162:expressionTable:0:deleteExpression
      2010-04-29 14:36:29,565 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-4) No component found to process as 'ajaxSingle' for clientId j_id162:expressionTable:0:deleteExpression
      2010-04-29 14:36:29,566 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-4) No component found to process as 'ajaxSingle' for clientId j_id162:expressionTable:0:deleteExpression
      2010-04-29 14:36:35,592 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-6) No component found to process as 'ajaxSingle' for clientId j_id162:expressionTable:0:j_id172
      2010-04-29 14:36:35,593 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-6) No component found to process as 'ajaxSingle' for clientId j_id162:expressionTable:0:j_id172
      2010-04-29 14:36:35,594 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-6) No component found to process as 'ajaxSingle' for clientId j_id162:expressionTable:0:j_id172
      2010-04-29 14:36:37,454 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-6) No component found to process as 'ajaxSingle' for clientId j_id162:expressionTable:0:j_id172
      2010-04-29 14:36:37,455 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-6) No component found to process as 'ajaxSingle' for clientId j_id162:expressionTable:0:j_id172
      2010-04-29 14:36:37,456 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-6) No component found to process as 'ajaxSingle' for clientId j_id162:expressionTable:0:j_id172
      2010-04-29 14:36:38,382 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-6) No component found to process as 'ajaxSingle' for clientId j_id162:expressionTable:0:j_id172
      2010-04-29 14:36:38,383 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-6) No component found to process as 'ajaxSingle' for clientId j_id162:expressionTable:0:j_id172
      2010-04-29 14:36:38,384 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-6) No component found to process as 'ajaxSingle' for clientId j_id162:expressionTable:0:j_id172
      2010-04-29 14:36:39,480 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-6) No component found to process as 'ajaxSingle' for clientId j_id162:expressionTable:0:j_id172
      2010-04-29 14:36:39,481 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-6) No component found to process as 'ajaxSingle' for clientId j_id162:expressionTable:0:j_id172
      2010-04-29 14:36:39,482 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-6) No component found to process as 'ajaxSingle' for clientId j_id162:expressionTable:0:j_id172
      2010-04-29 14:36:40,351 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-6) No component found to process as 'ajaxSingle' for clientId j_id162:expressionTable:0:j_id172
      2010-04-29 14:36:40,352 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-6) No component found to process as 'ajaxSingle' for clientId j_id162:expressionTable:0:j_id172
      2010-04-29 14:36:40,352 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-6) No component found to process as 'ajaxSingle' for clientId j_id162:expressionTable:0:j_id172
      2010-04-29 14:36:41,970 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-6) No component found to process as 'ajaxSingle' for clientId j_id162:expressionTable:0:j_id172
      2010-04-29 14:36:41,971 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-6) No component found to process as 'ajaxSingle' for clientId j_id162:expressionTable:0:j_id172
      2010-04-29 14:36:41,971 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-6) No component found to process as 'ajaxSingle' for clientId j_id162:expressionTable:0:j_id172
      2010-04-29 14:36:42,922 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-6) No component found to process as 'ajaxSingle' for clientId j_id162:doneExpression
      2010-04-29 14:36:42,923 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-6) No component found to process as 'ajaxSingle' for clientId j_id162:doneExpression
      2010-04-29 14:36:42,923 WARN  [org.ajax4jsf.component.AjaxViewRoot] (ajp-dev.tairgroup.org%2F10.10.10.107-8009-6) No component found to process as 'ajaxSingle' for clientId j_id162:doneExpression
      

       

       

      Here is the modal panel code with the doneExpression and deleteExpression components, which have variations on ajaxSingle:

       

       

                                          <rich:modalPanel
                                              id="componentPanel"
                                              autosized="true">
                                              <f:facet name="header">
                                                  <h:outputText
                                                      id="componentPanelHeader"
                                                      value="Subcellular Localization Annotations" />
                                              </f:facet>
                                              <f:facet name="controls">
                                                  <h:graphicImage
                                                      value="/i/icon_close.gif"
                                                      style="cursor:pointer"
                                                      onclick="#{rich:component('componentPanel')}.hide()" />
                                              </f:facet>
                                              <p>
                                                  <strong> <h:outputText
                                                          id="componentText"
                                                          value="Annotating locus #{geneSubmission.selectedGene.locus} from article #{geneSubmission.articleId}" />
                                                  </strong>
                                              </p>
                                              <h:form>
                                                  <rich:dataTable
                                                      rows="0"
                                                      value="#{geneSubmission.selectedGene.components}"
                                                      var="c"
                                                      id="componentTable">
                                                      <rich:column>
                                                          <f:facet name="header">
                                                              <h:panelGrid
                                                                  rowClasses="headerLabel,exampleTableHeader,exampleTableHeader,exampleTableHeader,exampleTableHeader,instructionTableHeader,instructionTableHeader"
                                                                  columns="1">
                                                                  <h:outputText value="Subcellular Localization" />
                                                                  <h:outputText value="Examples:" />
                                                                  <h:outputText value="plasma membrane" />
                                                                  <h:outputText value="mitochondrion" />
                                                                  <h:outputText value="chloroplast thylakoid" />
                                                                  <h:outputText
                                                                      value="Start typing, then choose from list or add a new term," />
                                                                  <h:outputText
                                                                      value="then click outside the field to accept the new term." />
                                                              </h:panelGrid>
                                                          </f:facet>
                                                          <h:inputText
                                                              value="#{c.term}"
                                                              size="50"
                                                              id="componentTerm">
                                                          </h:inputText>
                                                          <rich:suggestionbox
                                                              suggestionAction="#{c.suggestComponents}"
                                                              var="cterm"
                                                              for="componentTerm"
                                                              minChars="2"
                                                              ignoreDupResponses="true"
                                                              eventsQueue="componentTermQueue"
                                                              fetchValue="#{cterm.keyword}"
                                                              nothingLabel="Enter new term"
                                                              width="600"
                                                              height="325">
                                                              <h:column>
                                                                  <f:facet name="header">Term</f:facet>
                                                                  <h:outputText value="#{cterm.keyword}" />
                                                              </h:column>
                                                              <h:column>
                                                                  <f:facet name="header">Id</f:facet>
                                                                  <h:outputText value="#{cterm.id}" />
                                                              </h:column>
                                                              <h:column>
                                                                  <f:facet name="header">Synonym</f:facet>
                                                                  <h:outputText value="#{cterm.synonym}" />
                                                              </h:column>
                                                          </rich:suggestionbox>
                                                      </rich:column>
                                                      <rich:column>
                                                          <f:facet name="header">
                                                              <h:panelGrid
                                                                  rowClasses="headerLabel,exampleTableHeader,exampleTableHeader,instructionTableHeader"
                                                                  columns="1">
                                                                  <h:outputText value="Method" />
                                                                  <h:outputText value="Example:" />
                                                                  <h:outputText value="localization of GFP/YFP fusion protein" />
                                                                  <h:outputText value="Choose a method or enter a new one." />
                                                              </h:panelGrid>
                                                          </f:facet>
                                                          <rich:comboBox
                                                              id="cMethod"
                                                              value="#{c.method}"
                                                              suggestionValues="#{c.componentMethods}"
                                                              defaultLabel="Choose method or enter a new one..."
                                                              enableManualInput="true"
                                                              directInputSuggestions="true"
                                                              width="400" />
                                                      </rich:column>
                                                      <rich:column>
                                                          <a4j:commandButton
                                                              id="deleteComponent"
                                                              ajaxSingle="true"
                                                              action="#{geneSubmission.selectedGene.deleteComponentAnnotation}"
                                                              reRender="componentTable, componentLink"
                                                              value="Delete">
                                                              <f:setPropertyActionListener
                                                                  target="#{geneSubmission.selectedGene.deletedAnnotation}"
                                                                  value="#{c}" />
                                                          </a4j:commandButton>
                                                      </rich:column>
                                                  </rich:dataTable>
                                                  <h:panelGrid columns="2">
                                                      <a4j:commandButton
                                                          id="doneComponent"
                                                          value="Continue to Next Step"
                                                          type="button"
                                                          oncomplete="#{rich:component('componentPanel')}.hide()"
                                                          reRender="locusTable,submitButton,globalMessages">
                                                          <a4j:support
                                                              ajaxSingle="true"
                                                              event="onclick">
                                                              <f:setPropertyActionListener
                                                                  value="#{login.communityId}"
                                                                  target="#{geneSubmission.communityId}" />
                                                          </a4j:support>
                                                      </a4j:commandButton>
                                                      <a4j:commandButton
                                                          id="addComponent"
                                                          value="Add Another Subcellular Localization"
                                                          type="button"
                                                          action="#{geneSubmission.selectedGene.addComponent}"
                                                          reRender="componentTable" />
                                                  </h:panelGrid>
                                              </h:form>
                                          </rich:modalPanel>
      

       

      If anyone has any suggestions or guesses for what might be going on here, I'd love to hear it . Does this message mean the component tree no longer has the relevant component in it on the server?

        • 1. Re: No component found to process as 'ajaxSingle'
          harut

          Why you need a4j:support inside the a4j:commandButton (id="doneComponent") ???? You have to remove it...

          If you need to pass any parameter to server use a4j:actionparam instead of <f:setPropertyActionListener value="login.comunityId".....

          Also remove ajasSingle=true from that commandButtons and try again...

          • 2. Re: No component found to process as 'ajaxSingle'
            poesys

            I replaced the non-object uses of setPropertyActionListener with actionparam and eliminated the ajaxSingle settings and everything seems to be working fine, the user reports no additional issues with the form. I left several uses of the listener in place as they were transferring objects rather than basic types.

             

            Thank you!

            • 3. Re: No component found to process as 'ajaxSingle'
              jesussalinas

              I need more information to know exacty what is happening. But we always find the same problem when we work with paginating table if we include actions inside and we try to manage them in Ajax environments.EjercicioTablasPaginadas05.jpgIn order to optimize sent information to the server, we use actions in this way:

               

              <rich:dataTable value="bean1.modelo" var="f" ...>
                   ...
                   <rich:column ...>
                        <a4j:commandLink id="..." 
                               ...   
                               ajaxSingle="true" 
                               limitToList="true">
              
                             <h:outputText value="#{f.concepto}" />
                                  <a4j:actionparam name="concepto" value="#{f.concepto}"
                                      assignTo="#{bean1.f.concepto}">
                             </a4j:actionparam>
                             ...
                        </a4j:commandLink>
                   </rich:column>
                   ...
              </rich:dataTable>
              

               

               

              We use attributes ajaxSingle and limitToList to avoid sending unnecessary data.

              At this point, actions don't work anymore and log file shows the message "No component found to process as 'ajaxSingle' ... "

               

              The framework try to say it's not able to find the components, (buttons or links) related to those actions, in the JSF restore phase (JavaServer Faces Lifecycle) and this is the reason why the framework does nothing.

               

              We only have these problems when objects in the model use as id a non numerical field. For instance, if we build a datatable to render Document objects:

               

              ...
              
              public class Document{
              
                   // documentCode is the id.
                   private String documentCode;
                   private String title;
                   ...
              
              }
              
              

               

              In these situations, we have to add a new attribute in rich:dataTable:

               

              - rowKeyConverter: JSF standard converter.

               

              public class Conversor implements Converter{
                  public Object getAsObject(FacesContext context, 
                                UIComponent component,String value) {
                      return value;
                  }
                  public String getAsString(FacesContext context, 
                            UIComponent component,Object value){        
                      return value.toString();
                  }
              }
              

               

              faces-config.xml:

               

              <converter>
                   <converter-id>converterSample</converter-id>
                   <converter-class>
                        es.ematiz.conversores.Conversor
                   </converter-class>
              </converter>
              
              

               

              The view is:

               

              <rich:dataTable value="bean1.modelo" var="f" 
              
                              rowKeyConverter="converterSample"
                              ... >
                   ...
              
                   <rich:column ...>
                        <a4j:commandLink id="..." 
                               ...   
                               ajaxSingle="true" 
                               limitToList="true">
              
                             <h:outputText value="#{f.concepto}" />
                                  <a4j:actionparam name="concepto" value="#{f.concepto}"
                                      assignTo="#{bean1.f.concepto}">
                             </a4j:actionparam>
                             ...
                        </a4j:commandLink>
                   </rich:column>
                   ...
              </rich:dataTable>
              

               

              We are posting information related to this subject in http://www.tekuento.net.

              • 4. Re: No component found to process as 'ajaxSingle'
                ilya40umov

                1) Please rise a new discussion/question

                2) Specify your RF version

                3) Are you sure that you need limitToList attribute? Do you have this problem without limitToList?

                • 5. Re: No component found to process as 'ajaxSingle'
                  jesussalinas

                  We're working with RichFaces 3.3.3.Final.

                  The problem is not limitToList attribute.

                  • 6. No component found to process as 'ajaxSingle'
                    ben.maisano

                    Hi, if this helps troubleshoot at all, I'm having the same issue.

                    RF 3.3.2

                    Jboss 5.0.1

                     

                    Have a c:forEach looping to create a table, and include a rich:columns for dynamic columns.  Also within the table after the dynamic columns is a regular rich:column with an a4j:commandButton as such

                    <rich:column>

                                                        <a4j:commandButton ajaxSingle="true"

                                                            action="#{actionBean[removeItemMethod]}"

                                                            reRender="listTable" >

                                                            <f:setPropertyActionListener

                                                                target="#{actionBean[selectedIndex]}" value="#{status.index}" />

                                                        </a4j:commandButton>

                                                    </rich:column>

                     

                    The status is from the c:forEach varStatus and the target is set dynamically through facelets parameters.  This is used to remove the current List item from the list, then it reRenders the entire table (this column being in that table) and the whole row does get removed on refresh.

                     

                    This works great,however I sometimes get this issue documented:

                    [AjaxViewRoot] No component found to process as 'ajaxSingle' for clientId mainForm:j_id172:j_id631:j_id637

                    When I have two of these components on the page at same time and I do a lot of adding and removing of different rows in the two tables.

                    This is all within a facelets tag so a developer may include this tag many times within a page.  The funny thing is it sometimes comes up and I will add/remove from the other table and then it will go away, or if I add (which takes no parameter and never breaks) and therefore table gets refreshed, the problem goes away.