You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Werner Punz (Jira)" <de...@myfaces.apache.org> on 2023/10/02 18:46:00 UTC
[jira] [Comment Edited] (MYFACES-4606) Missing source button id:value pair from request parameters in ajax requests
[ https://issues.apache.org/jira/browse/MYFACES-4606?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17771244#comment-17771244 ]
Werner Punz edited comment on MYFACES-4606 at 10/2/23 6:45 PM:
---------------------------------------------------------------
Will look at this. We probably simply cannot attach a key value pair for elements exposing this behavior, to my knowledge only checkboxes and radio buttons should be affected by this, because they can hold values but expose the values only by their respective state.
The internal code check does not test for type but only if a value is present, however in case of a checkbox or radio button the flag checked is the overriding flag here.
was (Author: werpu):
Will look at this.
> Missing source button id:value pair from request parameters in ajax requests
> ----------------------------------------------------------------------------
>
> Key: MYFACES-4606
> URL: https://issues.apache.org/jira/browse/MYFACES-4606
> Project: MyFaces Core
> Issue Type: Improvement
> Affects Versions: 2.0.24, 2.2.15, 2.3.10, 3.0.2, 2.3-next-M8, 4.0.1
> Reporter: Volodymyr Siedlecki
> Assignee: Werner Punz
> Priority: Major
> Fix For: 2.3.11, 3.0.3, 2.2.16, 4.0.2
>
>
> When the non-ajax submit button is pressed, its id and value is sent as a request parameter. If the ajax equivalent button is pressed, the id-value pair is missing. However, the id is included under the "javax.faces.source" attribute, per the spec.
> This becomes a problem if you do some param checks (via binding attr.) to see if a particular button is pressed. See more info about this here: [https://stackoverflow.com/a/14730658/11402059]
> Here's a sample of the behaviors for ajax and non ajax submissions. The required parts are in red (which should appear in both requests):
> {code:java}
> <h:form id="form1">
> <div> Ajax Checkboxes: </div>
> <h:selectManyCheckbox id="ajaxCheckbox" required="#{not empty param[ajaxbtn.clientId]}">
> <f:selectItem itemValue = "1" itemLabel = "Item 1" />
> <f:selectItem itemValue = "2" itemLabel = "Item 2" />
> </h:selectManyCheckbox>
> Message for ajaxCheckbox -> <h:message for="ajaxCheckbox" />
> <br/>
> <div> Non-Ajax Checkboxes: </div>
> <h:selectManyCheckbox id="nonajaxCheckbox" required="#{not empty param[nonajaxbtn.clientId]}">
> <f:selectItem itemValue = "3" itemLabel = "Item 3" />
> <f:selectItem itemValue = "4" itemLabel = "Item 4" />
> </h:selectManyCheckbox>
> Message for nonajaxCheckbox -> : <h:message for="nonajaxCheckbox" />
> <br/>
> <!-- Added this button to see parameters passed when using ajax -->
> <h:commandButton id="ajaxbtn" value="Ajax Submit" binding="#{ajaxbtn}">
> <f:ajax event="click" execute="@form" render="@form"/>
> </h:commandButton>
> <h:commandButton id="nonajaxbtn" value="Non Ajax Submit" binding="#{nonajaxbtn}"/>
> <c:forEach items="#{param}" var="entry">
> <p style="#{entry.key == 'form1:nonajaxbtn' or entry.key == 'form1:ajaxbtn' ? 'color:red;' : 'color:black;'}"><h:outputText value="#{entry.key}" /> : <h:outputText value="#{entry.value}" /></p>
> </c:forEach>
> </h:form>
> {code}
>
> It used to work in 2.0, but now fails after refactoring. Haven't tested on 4.0, but I think it's also affected.
> 2.3.x:
> [https://github.com/apache/myfaces/blob/2.3.x/api/src/main/javascript/META-INF/resources/myfaces/_impl/xhrCore/_AjaxUtils.js#L38-L63]
>
> 2.0.5:
> [https://github.com/apache/myfaces/blob/myfaces-core-project-2.0.5/api/src/main/javascript/META-INF/resources/myfaces/_impl/xhrCore/_AjaxUtils.js#L57]
--
This message was sent by Atlassian Jira
(v8.20.10#820010)