Nils Lundquist created MYFACES-3626:
---------------------------------------
Summary: f:ajax execute '@none' submitted as explicit request
param, firing source listeners
Key: MYFACES-3626
URL: https://issues.apache.org/jira/browse/MYFACES-3626
Project: MyFaces Core
Issue Type: Bug
Affects Versions: 2.1.9
Environment: MyFaces 2.1.9 / Tomcat
Reporter: Nils Lundquist
When f:ajax is used to initiate a request, and '@none' is the execution target,
JSF spec indicates that the 'java.faces.partial.execute' request parameter
should be left blank. This is also indicated by comments in MyFaces javascript
and in the following issue:
https://issues.apache.org/jira/browse/MYFACES-2914
However, trace the same code where the behaviour is described in comments, and
you'll find the following:
{code:javascript|title=jsf.js}
_transformList: function(passThrgh, target, srcStr, form, elementId) {
var _Lang = this._Lang;
//this is probably the fastest transformation method
//it uses an array and an index to position all elements correctly
//the offset variable is there to prevent 0 which results in a javascript
//false
var offset = 1,
vals = (srcStr) ? srcStr.split(/\s+/) : [],
idIdx = (vals.length) ? _Lang.arrToMap(vals, offset) : {},
//helpers to improve speed and compression
none = idIdx[this.IDENT_NONE],
all = idIdx[this.IDENT_ALL],
theThis = idIdx[this.IDENT_THIS],
theForm = idIdx[this.IDENT_FORM];
if (none) {
//in case of none only one value is returned
passThrgh[target] = this.IDENT_NONE;
return passThrgh;
}
...
{code}
Which instead of setting a empty string for the 'javax.faces.partial.execute'
request param, sets '@none' itself.
'@none' is submitted as the value of 'javax.faces.partial.execute', which
causes the executing VisitTreeCallback to have the set of ids to execute
['@none', 'form3e:button']. 'form3e:button' is the value of
'javax.faces.source', and is the client id of the submitting element. This
visit causes listeners and input on the submitting element to decode. This is
erroneous behaviour for a request with '@none' as the sole target.
When using manual JavaScript debugging to prevent the offending '@none' request
parameter, the request correctly did not execute the submitting element.
I will be attaching a proposed patch to resolve this issue as well as a reduced
test case.
--
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