1 Reply Latest reply on Feb 12, 2010 2:22 PM by Rocky S

    "Component  xxx has invalid value expression xxx"

    Steve Singer Newbie

      I'm having an odd problem I'm hoping someone can help with.  I've created a shuttle list that works great --


      <s:decorate id="productValues">       

           <rich:listShuttle sourceValue="#{productHomeValue.availableValues}"
                     targetValue="#{productHomeValue.selectedValues}" var="item" listHeight="300"
                     listWidth="300" sourceCaptionLabel="Available Values"
                     listsHeight="300" sourceListWidth="275" targetListWidth="275"
                     targetCaptionLabel="Selected Values"
                     copyAllControlLabel="Add All">
                      <s:div style="border: .5px solid ; vertical-align:middle ;">
                         <h:graphicImage url="#{item.ValueURL}" width="25" height="25" style="border: .5px solid"/>
                         <h:outputText value="#{item.ValueName}" style="padding-left:5px" />



      I then put a input text box that will fire an event to filter the values in the "availableValues" list based on what is entered in the input text, and then redisplay the control --

                 <ui:define name="label">Value Name</ui:define>
                      <h:inputText id="ValueName" value="#{productHomeValue.ValueName}">
                           <a:support event="onkeyup"  action="#{productHomeValue.resetList}" requestDelay="500"
                                 eventsQueue="ValueSelectQueue" ignoreDupResponses="true" reRender="productValues"  />


      This ALSO works great.  However, there is one problem -- if I type into the text field, wait a second, start typing again, etc, I get a "Component productValuesj:id159 has invalid value expression com.model.Value@55cr9" error.  No errors in the log.  Has anybody had a similar issue?  I am thinking that the problem is that the Ajax request is firing multiple requests and that the listShuttle list is trying to display the list while the backing bean is still updating it.  Is there a way to make sure that a second Ajax request doesn't fire until the first one completes?   As you can see, I put in an event queue to stack up the requests, and that appears to be working, but I'm still getting this issue.


      Thanks in advance.