[ 
https://issues.jboss.org/browse/RF-11365?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12749823#comment-12749823
 ] 

Christophe Noel edited comment on RF-11365 at 1/23/13 5:52 AM:
---------------------------------------------------------------

Hello,

I encountered the same issue, using Liferay Faces Bridge 3.1.0 rc2.
(Same issue using: RF 4.2.0 and 4.2.2)

The fix (in Richfaces library) proposed in Liferay Faces Bridge forum works ! 
(here: http://issues.liferay.com/browse/FACES-249)
META-INF/resources/richfaces.js line 333 :
{code}
        var getExtensionResponseElement = function(responseXML) {
                return jQuery("partial-response 
extension#org\\.richfaces\\.extension", responseXML);
        };
{code}

My own code:

{code:xml} 
<a4j:commandButton id="myTestButton"
                                        value='testComplete'
                                                onbegin="alert('begin');"
                                                
actionListener="#{uiSearchBean.listener}"
                                                oncomplete="alert('complete');"
                                                >
                                        </a4j:commandButton>
{code}

RF log:
{code} 
{debug[10:41:52.082]: New request added to queue. Queue requestGroupingId 
changed to A8569:uiSearchForm:matching-datatable:0:myTestButton
debug[10:41:52.083]: Queue will wait 0ms before submit
debug[10:41:52.084]: richfaces.queue: will submit request NOW
info [10:41:53.488]: Received 'begin' event from <input 
id=A8569:uiSearchForm:matching-datatable:0:myTestButton ...>
info [10:41:53.557]: Received 'beforedomupdate' event from <input 
id=A8569:uiSearchForm:matching-datatable:0:myTestButton ...>
debug[10:41:53.557]: Server returned responseText: 
<partial-response><changes><update 
id="A8569:uiSearchForm:j_idt12"><![CDATA[<span id="A8569:uiSearchForm:j_idt12"> 
<div id="messageD"> <table id="messageT" class="rich-messages"> </table> 
</div></span>]]></update><update 
id="javax.faces.ViewState"><![CDATA[1595359017373670725:-6482414893939857634]]></update><extension
 
id="A8569org.richfaces.extension"><complete>alert('complete');;</complete></extension></changes></partial-response>
info [10:41:53.558]: Listing content of response changes element:
Element update for id=A8569:uiSearchForm:j_idt12
<update id="A8569:uiSearchForm:j_idt12"><![CDATA[<span 
id="A8569:uiSearchForm:j_idt12"> <div id="messageD"> <table id="messageT" 
class="rich-messages"> </table> </div></span>]]></update>
Element update for id=javax.faces.ViewState
<update 
id="javax.faces.ViewState"><![CDATA[1595359017373670725:-6482414893939857634]]></update>
Element extension for id=A8569org.richfaces.extension
<extension 
id="A8569org.richfaces.extension"><complete>alert('complete');;</complete></extension>
debug[10:41:53.559]: richfaces.queue: ajax submit successfull
debug[10:41:53.559]: richfaces.queue: Nothing to submit
info [10:41:53.560]: Received 'success' event from <input 
id=A8569:uiSearchForm:matching-datatable:0:myTestButton ...>
info [10:41:53.560]: Received 'complete' event from <input 
id=A8569:uiSearchForm:matching-datatable:0:myTestButton ...>
{code}
                
      was (Author: christophe.noel):
    Hello,

I encountered the same issue, using Liferay Faces Bridge 3.1.0 rc2.
Same issue using: RF 4.2.0 and 4.2.2.

The fix (in Richfaces library) was explained here: 
http://issues.liferay.com/browse/FACES-249

My own code:

{code:xml} 
<a4j:commandButton id="myTestButton"
                                        value='testComplete'
                                                onbegin="alert('begin');"
                                                
actionListener="#{uiSearchBean.listener}"
                                                oncomplete="alert('complete');"
                                                >
                                        </a4j:commandButton>
{code}

RF log:
{code} 
{debug[10:41:52.082]: New request added to queue. Queue requestGroupingId 
changed to A8569:uiSearchForm:matching-datatable:0:myTestButton
debug[10:41:52.083]: Queue will wait 0ms before submit
debug[10:41:52.084]: richfaces.queue: will submit request NOW
info [10:41:53.488]: Received 'begin' event from <input 
id=A8569:uiSearchForm:matching-datatable:0:myTestButton ...>
info [10:41:53.557]: Received 'beforedomupdate' event from <input 
id=A8569:uiSearchForm:matching-datatable:0:myTestButton ...>
debug[10:41:53.557]: Server returned responseText: 
<partial-response><changes><update 
id="A8569:uiSearchForm:j_idt12"><![CDATA[<span id="A8569:uiSearchForm:j_idt12"> 
<div id="messageD"> <table id="messageT" class="rich-messages"> </table> 
</div></span>]]></update><update 
id="javax.faces.ViewState"><![CDATA[1595359017373670725:-6482414893939857634]]></update><extension
 
id="A8569org.richfaces.extension"><complete>alert('complete');;</complete></extension></changes></partial-response>
info [10:41:53.558]: Listing content of response changes element:
Element update for id=A8569:uiSearchForm:j_idt12
<update id="A8569:uiSearchForm:j_idt12"><![CDATA[<span 
id="A8569:uiSearchForm:j_idt12"> <div id="messageD"> <table id="messageT" 
class="rich-messages"> </table> </div></span>]]></update>
Element update for id=javax.faces.ViewState
<update 
id="javax.faces.ViewState"><![CDATA[1595359017373670725:-6482414893939857634]]></update>
Element extension for id=A8569org.richfaces.extension
<extension 
id="A8569org.richfaces.extension"><complete>alert('complete');;</complete></extension>
debug[10:41:53.559]: richfaces.queue: ajax submit successfull
debug[10:41:53.559]: richfaces.queue: Nothing to submit
info [10:41:53.560]: Received 'success' event from <input 
id=A8569:uiSearchForm:matching-datatable:0:myTestButton ...>
info [10:41:53.560]: Received 'complete' event from <input 
id=A8569:uiSearchForm:matching-datatable:0:myTestButton ...>
{code}
                  
> onbeforedomupdate and oncomplete not working in Portlet environment
> -------------------------------------------------------------------
>
>                 Key: RF-11365
>                 URL: https://issues.jboss.org/browse/RF-11365
>             Project: RichFaces
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>    Affects Versions: 4.0.0.Final
>            Reporter: Detlef Pleiss
>             Fix For: 5-Future
>
>
> example page:
> {code}
> <ui:composition xmlns="http://www.w3.org/1999/xhtml";
>       xmlns:ui="http://java.sun.com/jsf/facelets";
>       xmlns:h="http://java.sun.com/jsf/html";
>       xmlns:f="http://java.sun.com/jsf/core";
>       xmlns:a4j="http://richfaces.org/a4j";
>       xmlns:rich="http://richfaces.org/rich";>
> <h:head/>
> <h:form>
>     <h:panelGrid columns="2">
>        <h:outputText value="Text:" />
>        <h:inputText value="#{echoBean.text}" >
>           <a4j:ajax event="keyup" 
>                 
>                                       onbeforesubmit="alert('beforesubmit')"
>                                       onbegin="alert('begin')"
>                                       
> onbeforedomupdate="alert('beforedomupdate')"
>                                       oncomplete="alert('complete')"
>                                       
>                 render="text,count" listener="#{echoBean.countListener}"/>
>          </h:inputText>
>       <h:outputText value="Echo:" />
>       <h:outputText id="text" value="#{echoBean.text}" />
>     <h:outputText value="Count:" />
>     <h:outputText id="count" value="#{echoBean.count}" />
>    </h:panelGrid>
> </h:form>
> </ui:composition>
> {code}
> The alerts for onbeforedomupdate and oncomplete do not appear in a portal 
> environment; they do in a non-portal web environment. 
> The Ajax XML response in a non portal web environment contains the tag 
> <extension id="org.richfaces.extension"> with the Javascript code from the 
> named attributes.
> But, in a portal environment the id gets prefixed like i.e. <extension 
> id="A3331org.richfaces.extension">
> In fact Richfaces asks for this prefix in 
> richfaces-core-api-4.0.0.Final-sources : 
> org.richfaces.renderkit.util.CoreAjaxRendererUtils.java
> line 96 by calling 
> facesContext.getExternalContext().encodeNamespace(EXTENSION_ID))
> In a Servlet environment this leaves EXTENSION_ID = "org.richfaces.extension" 
> unchanged, but in a Portlet environment its function is to
> "Return the specified name, after prefixing it with a namespace that ensures 
> that it will be unique within the context of a particular page" (quoted from 
> Javadoc).
> Only, the Javascript meant to react on the extension tag is hardcoded to 
> react on the ID "org.richfaces.extension" only without any prefix:
> META-INF/resources/richfaces.js line 333 :
> {code}
>       var getExtensionResponseElement = function(responseXML) {
>               return jQuery("partial-response 
> extension#org\\.richfaces\\.extension", responseXML);
>       };
> {code}
> So, in a Portlet environment the partial-response/extension is ignored due to 
> the prefixed ID.
> A possible solution might be to have the Javascript accept any prefix in 
> front of the ID, like:
> {code}
>       var getExtensionResponseElement = function(responseXML) {
>               return jQuery("partial-response 
> extension[id$='org\\.richfaces\\.extension']", responseXML);
>       };
> {code}

--
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

Reply via email to