[
https://issues.jboss.org/browse/RF-13567?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12950902#comment-12950902
]
Lukáš Fryč edited comment on RF-13567 at 3/6/14 4:52 PM:
---------------------------------------------------------
The details you have shared are about JSF event handling:
* onevent callback with either begin, complete or success
* onerror callback
but RichFaces extends this concept with:
* onbeforedomupdate (mapped to JSF's onevent('complete'))
* oncomplete (mapped to JSF's onevent('success'))
see the actual mapping here:
legend: {{onevent('complete') -> onbeforedomupdate}}
{code}
var jsfEventsAdapterEventNames = {
event: {
'begin': ['begin'],
'complete': ['beforedomupdate'],
'success': ['success', 'complete']
},
error: ['error', 'complete']
};
{code}
https://github.com/richfaces/richfaces/blob/2d6e657136e409f67d837a7a30551bd84daba8cf/framework/src/main/resources/META-INF/resources/org.richfaces/richfaces.js#L383
RichFaces JavaScriptService fires oncomplete, which means JSF's
onevent('success'), which means "Occurs immediately after jsf.ajax.response has
completed."
was (Author: lfryc):
The details you have shared are about JSF event handling:
* onevent callback with either begin, complete or success
* onerror callback
but RichFaces extends this concept with:
* onbeforedomupdate (mapped to JSF's onevent('complete'))
* oncomplete (mapped to JSF's onevent('success'))
see the actual mapping here:
legend: {{onevent('complete') -> onbeforedomupdate}}
{code}
var jsfEventsAdapterEventNames = {
event: {
'begin': ['begin'],
'complete': ['beforedomupdate'],
'success': ['success', 'complete']
},
error: ['error', 'complete']
};
{code}
https://github.com/richfaces/richfaces/blob/master/framework/src/main/resources/META-INF/resources/org.richfaces/richfaces.js#L383
RichFaces JavaScriptService fires oncomplete, which means JSF's
onevent('success'), which means "Occurs immediately after jsf.ajax.response has
completed."
> 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
[email protected]
https://lists.jboss.org/mailman/listinfo/richfaces-issues