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)

Reply via email to