[
https://issues.jboss.org/browse/RF-11365?page=com.atlassian.jira.plugin.s...
]
Dipali Pandya commented on RF-11365:
------------------------------------
I believe with websphere application server 8 there is no bridge, it comes with MyFaces
2.0 JSF container, as outlined here -
http://wiki.apache.org/myfaces/Websphere_Installation.
Is the fix you are referring to in the JS or is this the fix to the encodeNamespace
method, to not add the namespace?
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