[ 
https://issues.apache.org/jira/browse/MYFACES-4710?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17930813#comment-17930813
 ] 

Werner Punz edited comment on MYFACES-4710 at 2/26/25 10:10 PM:
----------------------------------------------------------------

Ok I think I found the code which causes it: HtmlCommandScriptRenderer indeed 
seems to swallow the o parameter passed down:

 
{code:java}
// code placeholder
script.append("var "+name+" = function(o){var o=(typeof 
o==='object')&&o?o:{};");
script.prettyLine();

List<UIParameter> uiParams = HtmlRendererUtils.getValidUIParameterChildren(
        context, getChildren(commandScript), false, false);

StringBuilder ajax = SharedStringBuilder.get(context, AJAX_SB, 60);

AjaxScriptBuilder.build(context,
        ajax,
        commandScript,
        commandScript.getClientId(context),
        "action",
        commandScript.getExecute(),
        commandScript.getRender(),
        commandScript.getResetValues(),
        commandScript.getOnerror(),
        commandScript.getOnevent(),
        uiParams); 
script.append(ajax.toString());
script.decreaseIndent();
script.append("}");



{code}
the AjaxScriptBuilder ignores the o parameter, it probably must be passed into 
the ui params upfront to be taken into consideration. Also params should be 
passed via params: {} (see my example code above) originally because the older 
specs did not specify it properly it was possible to pass them straight down. I 
got a bugreport a while ago in about a TCK failing because params was not taken 
into consideration, now in myfaces both methods work, but params should be used 
from now on as key for the params list!


was (Author: werpu):
Ok I think I found the code which causes it: HtmlCommandScriptRenderer indeed 
seems to swallow the o parameter passed down:

 
{code:java}
// code placeholder
script.append("var "+name+" = function(o){var o=(typeof 
o==='object')&&o?o:{};");
script.prettyLine();

List<UIParameter> uiParams = HtmlRendererUtils.getValidUIParameterChildren(
        context, getChildren(commandScript), false, false);

StringBuilder ajax = SharedStringBuilder.get(context, AJAX_SB, 60);

AjaxScriptBuilder.build(context,
        ajax,
        commandScript,
        commandScript.getClientId(context),
        "action",
        commandScript.getExecute(),
        commandScript.getRender(),
        commandScript.getResetValues(),
        commandScript.getOnerror(),
        commandScript.getOnevent(),
        uiParams); 
script.append(ajax.toString());
script.decreaseIndent();
script.append("}");



{code}
the AjaxScriptBuilder ignores the o parameter, it probably must be passed into 
the ui params upfront to be taken into consideration. Also params should be 
passed via params: {} (see my example code above) originally because the older 
specs did not specify it properly it was possible to pass them straight down. I 
got a bugreport a while ago in about a TCK failing because params was not taken 
into consideration, now in myfaces both methods work, but params should be used 
from now on as key for the params list!

I will look into it on fixing this but someone with more insight into the code 
probably can make a safer fix than I can! [~volosied] [~tandraschko] ?

 

> CommandScript: Behaves differently than Mojarra
> -----------------------------------------------
>
>                 Key: MYFACES-4710
>                 URL: https://issues.apache.org/jira/browse/MYFACES-4710
>             Project: MyFaces Core
>          Issue Type: Bug
>          Components: General
>    Affects Versions: 4.0.2, 4.1.0
>            Reporter: Melloware
>            Assignee: Werner Punz
>            Priority: Major
>         Attachments: image-2025-02-03-11-04-43-114.png, 
> image-2025-02-03-11-04-58-475.png, image-2025-02-24-21-21-16-189.png, 
> image-2025-02-24-21-50-18-216.png, image-2025-02-24-21-51-24-014.png, 
> image-2025-02-26-23-09-38-927.png, omnifaces-push-194.zip
>
>
> Original report: https://github.com/quarkiverse/quarkus-omnifaces/issues/194
> Basically if you pass a socket reponse message directly to a CommandScript 
> its supposed to convert those params to Request Parameters.
> {code:xml}
> <h:commandScript name="wsUpdate" action="#{omniPushBean.complex()}" 
> render="something"/>
> <o:socket channel='complex' onmessage="wsUpdate"/>
> {code}
> If the socket message was 
> {code:javascript}
> {"event":"test","id":"48e496b2-1aa7-42ec-bd57-0832c966d8c7"}
> {code}
> It the `wsUpdate` command is supposed to send those as Request parameters and 
> Mojarra does this but MyFaces does not.
> Mojarra:
>  !image-2025-02-03-11-04-43-114.png! 
> MyFaces:
>  !image-2025-02-03-11-04-58-475.png! 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to