[
https://issues.apache.org/jira/browse/MYFACES-2755?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12879335#action_12879335
]
Werner Punz edited comment on MYFACES-2755 at 6/16/10 9:38 AM:
---------------------------------------------------------------
Ok this is not entirely javascript related at least not in my part of the code
is the problem here is following:
onclick = "jsf.ajax.request(this, event, { execute: this.id, render: 'counter'
}); return false;"
is mapped into
var cf = function(){jsf.ajax.request(this, event, { execute: this.id, render:
'counter' }); return false;};var oamSF = function(){};return (cf()==false)?
false : oamSF();
which reassigns the this scope (whoever has written that code did not take that
into consideration.
the problem then is that this is assigned to the function cf which then tries
to determine the original this.id id value.
But now that this points towards the function id is undefined.
A quick workaround to fix that problem would be to use one of our impl functions
the call would look like: cf myfaces._impl._util._Lang.hitch(this,
(){jsf.ajax.request(this, event, { execute: this.id, render: 'counter' });
return false;});
this would reassign the this to the original scope.
if you do not want to go for the helper in our impls Lang package then a
workaround would be to
go for following code:
var cf = function(){jsf.ajax.request(this, event, { execute: this.id, render:
'counter' }); return false;};var oamSF = function(){};return (cf.apply(this,
[])==false)? false : oamSF.apply(this, []);
This would drag the scope also in.
Ok I tried to fix it here, but the checkstyle plugin download currently fails
on me, can anyone fix it, the affected files are:
org.apache.myfaces.shared.renderkit.html.HtmlButtonRendererBase
org.apache.myfaces.shared.renderkit.html.HtmlLinkRendererBase
org.apache.myfaces.shared_impl.renderkit.html.HtmlButtonRendererBase
org.apache.myfaces.shared_impl.renderkit.html.HtmlLinkRendererBase
org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlButtonRendererBase
org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlLinkRendererBase
My personal vote would be to go for the apply(this, []) method instead of
calling hitch.
was (Author: werpu):
Ok this is not entirely javascript related at least not in my part of the
code is the problem here is following:
onclick = "jsf.ajax.request(this, event, { execute: this.id, render: 'counter'
}); return false;"
is mapped into
var cf = function(){jsf.ajax.request(this, event, { execute: this.id, render:
'counter' }); return false;};var oamSF = function(){};return (cf()==false)?
false : oamSF();
which reassigns the this scope (whoever has written that code did not take that
into consideration.
the problem then is that this is assigned to the function cf which then tries
to determine the original this.id id value.
But now that this points towards the function id is undefined.
A quick workaround to fix that problem would be to use one of our impl functions
the call would look like: cf myfaces._impl._util._Lang.hitch(this,
(){jsf.ajax.request(this, event, { execute: this.id, render: 'counter' });
return false;});
this would reassign the this to the original scope.
if you do not want to go for the helper in our impls Lang package then a
workaround would be to
go for following code:
var cf = function(){jsf.ajax.request(this, event, { execute: this.id, render:
'counter' }); return false;};var oamSF = function(){};return (cf.apply(this,
[])==false)? false : oamSF.apply(this, []);
This would drag the scope also in.
Cheers Werner
Leonardo or Jakob can you take over you probably know fastest where the related
code is.
> this.id is undefined in jsf.ajax.request (regression from 2.0.0)
> ----------------------------------------------------------------
>
> Key: MYFACES-2755
> URL: https://issues.apache.org/jira/browse/MYFACES-2755
> Project: MyFaces Core
> Issue Type: Bug
> Components: JSR-314
> Affects Versions: 2.0.1
> Reporter: Michael Concini
>
> With the new javascript, we now wrapper calls into jsf.ajax.request with a
> function call. So for example this:
> <h:commandButton id="incrementButton" value="Increment"
> onclick="jsf.ajax.request(this, event, { execute:
> this.id, render: 'counter' }); return false;"
> actionListener="#{counter.increment}" />
> would be rendered as this:
> <input id="incrementButton" name="incrementButton" type="submit"
> value="Increment"
> onclick="var cf = function(){jsf.ajax.request(this, event, { execute:
> this.id, render: 'counter' }); return false;};var oamSF = function(){};return
> (cf()==false)? false : oamSF();" />
> The problem is that we've broken the reference to this.id as it is undefined
> at the function's scope. This works fine in both the 2.0.0 release as well as
> Mojarra.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.