[JBoss JIRA] (RF-12353) Incorrect documentation/taglib on <a4j:param>
by Alexander Kiselyov (JIRA)
Alexander Kiselyov created RF-12353:
---------------------------------------
Summary: Incorrect documentation/taglib on <a4j:param>
Key: RF-12353
URL: https://issues.jboss.org/browse/RF-12353
Project: RichFaces
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: component-a4j-core, doc
Affects Versions: 4.2.2.Final, 4.2.0.Final
Environment: no matter
Reporter: Alexander Kiselyov
Priority: Minor
Technical background (RichFaces developers can easy skip it):
----
<a4j:param> performs setting of its value into an expression specified in "assignTo" attribute. As this component is set as Action listener for ActionSource parent - org.richfaces.component.AbstractParameter.processAction(ActionEvent) is called. This method directly retrieves request parameter with this parameter's name/clientId:
String requestValue = context.getExternalContext().getRequestParameterMap().get(getName());
and then, if converter's not found, sets it as a value of an expression, specified in "assignTo":
{code}
if (requestValue != null) {
Class<?> type = updateBinding.getType(elContext);
Converter converter = createConverter(context, type);
...
}
if (null != convertedValue) {
updateBinding.setValue(elContext, convertedValue);
}
{code}
When our expression value has reifiable type, for which JSF (or app developer) has registered a converter (for instance - Boolean) - all's peachy keen. But when developer uses, e.g., Map - expression's type (got in updateBinding.getType(ELContext)) is Object, and we're starting to receive strings in Map, which is probably parameterized with anything. Also this situation applies to "non-standard" reference types (user-declared JavaBean, for instance).
{code}
org.richfaces.view.facelets.html.ParameterHandler:
org.richfaces.view.facelets.html.ParameterHandler.ActionParamMetaRule.applyRule(String, TagAttribute, MetadataTarget):
...
else if ("converter".equals(name)) {
if (attribute.isLiteral()) {
return new LiteralConverterMetadata(attribute.getValue());
} else {
return new DynamicConverterMetadata(attribute);
}
}
...
{code}
I.e. <a4j:param> tag handler designed to accept "converter" attribute, which can appropriately convert value, passed from client.
----
[a4j:param VDL Doc|http://docs.jboss.org/richfaces/4.2.X/4.2.2.Final/vdldoc/a4j/param.html] has no mention of it, and value/assignTo attributes type specified as "java.lang.Object". a4j.taglib.xml has no mention of it, so developers have no chance to discover it, e.g., through the content assist, [Rich Component Reference|http://docs.jboss.org/richfaces/4.2.X/4.2.2.Final/Component_Ref...] has only two sentences about it, which are *very easy to miss*.
Also, [RichFaces Showcase|http://showcase.richfaces.org/richfaces/component-sample.jsf?dem...] contains no example, which uses "converter" attribute.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
12 years, 3 months
[JBoss JIRA] Created: (RF-10620) Remove or externalize maven-javascript-plugin 3rd party software from RichFaces
by Jay Balunas (JIRA)
Remove or externalize maven-javascript-plugin 3rd party software from RichFaces
-------------------------------------------------------------------------------
Key: RF-10620
URL: https://issues.jboss.org/browse/RF-10620
Project: RichFaces
Issue Type: Task
Security Level: Public (Everyone can see)
Components: cdk
Affects Versions: 4.0.0.CR1
Reporter: Jay Balunas
Assignee: Jay Balunas
Priority: Critical
Fix For: 4.Next
See source and details at maven-javascript-plugin.
For these external sources we need to:
* Verify why we are building and using these.
** Does not seem to be used in our source at all
* Determine how to either only depend on external sources, or pull these out into their own project to be built separately.
** If a separate project with completely out of RichFaces, or in the /build/resources area.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
12 years, 3 months
[JBoss JIRA] Created: (RF-11365) onbeforedomupdate and oncomplete not working in Portlet environment
by Detlef Pleiss (JIRA)
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
example page:
<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>
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 :
var getExtensionResponseElement = function(responseXML) {
return jQuery("partial-response extension#org\\.richfaces\\.extension", responseXML);
};
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:
var getExtensionResponseElement = function(responseXML) {
return jQuery("partial-response extension[id$='org\\.richfaces\\.extension']", responseXML);
};
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
12 years, 3 months