[ https://issues.jboss.org/browse/RF-13567?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12950600#comment-12950600 ]
Lukáš Fryč commented on RF-13567: --------------------------------- Brian, I don't think this is incorrect behavior unless I miss something. * onbeforedomupdate is called * DOM is updated by JSF * javascriptService is called on before complete event * oncomplete is called So the elements should be placed in the DOM already when DOM is updated. ^ Is it not possible that JSF DOM update causes to add a <script> with jQuery plugin execution and it is this script execution that adds elements you expect to be present already? ---- Note: the oncomplete event serves as notification for the user to know that every synchronous update of the page caused by partial response was processed. There should be no RichFaces specific logic following the execution of oncomplete event. > JavaScriptService executes javascript before the complete event > --------------------------------------------------------------- > > Key: RF-13567 > URL: https://issues.jboss.org/browse/RF-13567 > Project: RichFaces > Issue Type: Bug > Security Level: Public(Everyone can see) > Reporter: Brian Leathem > > Using the javascript service to execute jQuery plugins ends up with the > plugin being executed before the new elements are placed in the DOM. This > results in stale element references during subsequent plugin execution. > Console log with r:log enabled: > {code} > RichFaces: New request added to queue. Queue requestGroupingId changed to > form1:richTable:0:collapsibleSubTable log.js:195 > RichFaces: Queue will wait 0ms before submit log.js:195 > RichFaces: richfaces.queue: will submit request NOW log.js:195 > RichFaces: Received 'begin' event from <tbody > id=form1:richTable:0:collapsibleSubTable class=rf-cst ...> log.js:195 > Destroy called for sub-table-bridge of element: > form1:richTable:0:collapsibleSubTable sub-table-bridge.js:89 > Destroy called for sub-table of element: > form1:richTable:0:collapsibleSubTable sub-table.js:71 > RichFaces: Received 'beforedomupdate' event from <tbody > id=form1:richTable:0:collapsibleSubTable class=rf-cst ...> log.js:195 > RichFaces: <span>Server returned responseText: </span><span > class="rf-log-entry-msg-xml"><partial-response > id="j_id1"><changes><update > id="form1:richTable:0:collapsibleSubTable"><![CDATA[<tbody > id="form1:richTable:0:collapsibleSubTable" class="rf-cst"><tr > id="form1:richTable:0:collapsibleSubTable:f" class="rf-cst-ftr"><td > class="rf-cst-ftr-c" colspan="3">footer<ul class="data-scroller " > id="form1:richTable:0:collapsibleSubTable:subscroller"><li><a > class="rf-ds-btn rf-ds-btn-first rf-ds-dis" > id="form1:richTable:0:collapsibleSubTable:subscroller_ds_f">««««</a></li><li><a > class="rf-ds-btn rf-ds-btn-fastrwd rf-ds-dis" > id="form1:richTable:0:collapsibleSubTable:subscroller_ds_fr">««</a></li><li><a > class="rf-ds-btn rf-ds-btn-prev rf-ds-dis" > id="form1:richTable:0:collapsibleSubTable:subscroller_ds_prev">«</a></li><li><a > class="rf-ds-btn rf-ds-btn-next rf-ds-dis" > id="form1:richTable:0:collapsibleSubTable:subscroller_ds_next">»</a></li><li><a > class="rf-ds-btn rf-ds-btn-fastfwd rf-ds-dis" > id="form1:richTable:0:collapsibleSubTable:subscroller_ds_ff">»»</a></li><li><a > class="rf-ds-btn rf-ds-btn-last rf-ds-dis" > id="form1:richTable:0:collapsibleSubTable:subscroller_ds_l">»»»»</a></li><script > type="text/javascript">new > RichFaces.ui.DataScroller("form1:richTable:0:collapsibleSubTable:subscroller",function(event,element,data){RichFaces.ajax("form1:richTable:0:collapsibleSubTable:subscroller",event,{"parameters":{"form1:richTable:0:collapsibleSubTable:subscroller:page":data.page} > ,"incId":"1"} )},{"digitals":{} ,"buttons":{} ,"currentPage":1} > )</script></ul></td></tr><tr > id="form1:richTable:0:collapsibleSubTable:sc" style="display: > none;"><td><input > id="form1:richTable:0:collapsibleSubTable:state" > name="form1:richTable:0:collapsibleSubTable:state" type="hidden" value="0" > /><input id="form1:richTable:0:collapsibleSubTable:options" > name="form1:richTable:0:collapsibleSubTable:options" type="hidden" > /></td></tr></tbody>]]></update><update > id="j_id1:javax.faces.ViewState:0"><![CDATA[-7868019542578483246:-4058924891838140372]]></update><extension > > id="org.richfaces.extension"><complete>RichFaces.jQuery(document.getElementById('form1:richTable:0:collapsibleSubTable')).subTableBridge({"optionsInput":"form1:richTable:0:collapsibleSubTable:options","formId":"form1","expandMode":"ajax","stateInput":"form1:richTable:0:collapsibleSubTable:state","eventOptions":{"incId":"1"} > } > );RichFaces.javascriptServiceComplete();;</complete><render>form1:richTable:0:collapsibleSubTable@body > > </render></extension></changes></partial-response></span> > log.js:195 > RichFaces: <span>Listing content of response <b>changes</b> > element:<br>Element <b>update</b> for > id=form1:richTable:0:collapsibleSubTable<br><span > class="rf-log-entry-msg-xml"><update > id="form1:richTable:0:collapsibleSubTable"><![CDATA[<tbody > id="form1:richTable:0:collapsibleSubTable" class="rf-cst"><tr > id="form1:richTable:0:collapsibleSubTable:f" class="rf-cst-ftr"><td > class="rf-cst-ftr-c" colspan="3">footer<ul class="data-scroller " > id="form1:richTable:0:collapsibleSubTable:subscroller"><li><a > class="rf-ds-btn rf-ds-btn-first rf-ds-dis" > id="form1:richTable:0:collapsibleSubTable:subscroller_ds_f">««««</a></li><li><a > class="rf-ds-btn rf-ds-btn-fastrwd rf-ds-dis" > id="form1:richTable:0:collapsibleSubTable:subscroller_ds_fr">««</a></li><li><a > class="rf-ds-btn rf-ds-btn-prev rf-ds-dis" > id="form1:richTable:0:collapsibleSubTable:subscroller_ds_prev">«</a></li><li><a > class="rf-ds-btn rf-ds-btn-next rf-ds-dis" > id="form1:richTable:0:collapsibleSubTable:subscroller_ds_next">»</a></li><li><a > class="rf-ds-btn rf-ds-btn-fastfwd rf-ds-dis" > id="form1:richTable:0:collapsibleSubTable:subscroller_ds_ff">»»</a></li><li><a > class="rf-ds-btn rf-ds-btn-last rf-ds-dis" > id="form1:richTable:0:collapsibleSubTable:subscroller_ds_l">»»»»</a></li><script > type="text/javascript">new > RichFaces.ui.DataScroller("form1:richTable:0:collapsibleSubTable:subscroller",function(event,element,data){RichFaces.ajax("form1:richTable:0:collapsibleSubTable:subscroller",event,{"parameters":{"form1:richTable:0:collapsibleSubTable:subscroller:page":data.page} > ,"incId":"1"} )},{"digitals":{} ,"buttons":{} ,"currentPage":1} > )</script></ul></td></tr><tr > id="form1:richTable:0:collapsibleSubTable:sc" style="display: > none;"><td><input > id="form1:richTable:0:collapsibleSubTable:state" > name="form1:richTable:0:collapsibleSubTable:state" type="hidden" value="0" > /><input id="form1:richTable:0:collapsibleSubTable:options" > name="form1:richTable:0:collapsibleSubTable:options" type="hidden" > /></td></tr></tbody>]]></update></span><br>Element > <b>update</b> for id=j_id1:javax.faces.ViewState:0<br><span > class="rf-log-entry-msg-xml"><update > id="j_id1:javax.faces.ViewState:0"><![CDATA[-7868019542578483246:-4058924891838140372]]></update></span><br>Element > <b>extension</b> for id=org.richfaces.extension<br><span > class="rf-log-entry-msg-xml"><extension > id="org.richfaces.extension"><complete>RichFaces.jQuery(document.getElementById('form1:richTable:0:collapsibleSubTable')).subTableBridge({"optionsInput":"form1:richTable:0:collapsibleSubTable:options","formId":"form1","expandMode":"ajax","stateInput":"form1:richTable:0:collapsibleSubTable:state","eventOptions":{"incId":"1"} > } > );RichFaces.javascriptServiceComplete();;</complete><render>form1:richTable:0:collapsibleSubTable@body > </render></extension></span><br></span> log.js:195 > Create called for sub-table-bridge of element: > form1:richTable:0:collapsibleSubTable sub-table-bridge.js:42 > Create called for sub-table of element: form1:richTable:0:collapsibleSubTable > sub-table.js:22 > RichFaces: richfaces.queue: ajax submit successfull log.js:195 > RichFaces: richfaces.queue: Nothing to submit log.js:195 > RichFaces: Received 'success' event from <tbody > id=form1:richTable:0:collapsibleSubTable class=rf-cst ...> log.js:195 > RichFaces: Received 'complete' event from <tbody > id=form1:richTable:0:collapsibleSubTable class=rf-cst ...> log.js:195 > {code} > Note the "create" debug statements called from the plugin _create methods > occur before we get to the complete event. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira _______________________________________________ richfaces-issues mailing list richfaces-issues@lists.jboss.org https://lists.jboss.org/mailman/listinfo/richfaces-issues