Bill Lucy created MYFACES-3919: ---------------------------------- Summary: javax.faces.SEPARATOR_CHAR Applied Incorrectly to commandLink Hidden Field Key: MYFACES-3919 URL: https://issues.apache.org/jira/browse/MYFACES-3919 Project: MyFaces Core Issue Type: Bug Affects Versions: 2.2.4, 2.1.15, 2.0.21 Environment: WebSphere 8.5.5 Reporter: Bill Lucy
We've come across an issue while trying to modify the javax.faces.SEPARATOR_CHAR - changing it to a non-colon character seems to break h:commandLink actions. For example, with the separator character set to a hyphen "-", the following navigation does not work (the output link just triggers a refresh): <f:view> <h:form> <h:commandLink id="link" action="toLink.html"> <h:outputText value="Link" /> </h:commandLink> </h:form> </f:view> A workaround is to enable the context parameter org.apache.myfaces.RENDER_FORM_SUBMIT_SCRIPT_INLINE, however that parameter has been removed in the 2.2 branch. (It's also not a particularly desirable workaround.) The issue here seems to stem from the oamSubmit.js script; in that file there is a call myfaces.oam.setHiddenInput(formName, formName + ':' + '_idcl', linkId); which explicitly passes uses a colon separator character. In HtmlRendendererUtils.getHiddenCommandLinkFieldname, however, we have return formInfo.getFormName() + UINamingContainer.getSeparatorChar(FacesContext.getCurrentInstance())+ HIDDEN_COMMANDLINK_FIELD_NAME; which will cause the wrong hidden field name to be searched, and the broken actions seen here. As suggested by Leonardo: We should not use UINamingContainer.getSeparatorChar(...) to render that hidden field and enforce ':' instead. The reason is the intention of use javax.faces.SEPARATOR_CHAR is to avoid the collision with css when you use the ':', but in this case the intention is to create a hidden field, with no real underlying component, so it is better to let ':' on the js file. -- This message was sent by Atlassian JIRA (v6.2#6252)