[ https://issues.apache.org/jira/browse/MYFACES-4606?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17732261#comment-17732261 ]
Werner Punz edited comment on MYFACES-4606 at 6/13/23 10:30 PM: ---------------------------------------------------------------- I have issued pull requests for 2.3, 2.3-next and 3.0 but the new codebase also has the same issue. since it is getting late I will fix this tomorrow and issue also a pull request for 4.0. 2.3 - 4.0 are merged As for 2.2 I will fix this one tomorrow (wont go lower than that, for now! was (Author: werpu): I have issued pull requests for 2.3, 2.3-next and 3.0 but the new codebase also has the same issue. since it is getting late I will fix this tomorrow and issue also a pull request for 4.0. I will merge all PRs tomorrow, feel free to jump ahead and merge tonight, if you want! > 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 > > 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 binding checks to see if a particular > button is pressed. See the link: > [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 > 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 > 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)