CommandLink does not execute action if no javascript is allowed
---------------------------------------------------------------

                 Key: MYFACES-1692
                 URL: https://issues.apache.org/jira/browse/MYFACES-1692
             Project: MyFaces Core
          Issue Type: Bug
          Components: General
    Affects Versions:  1.2.0
         Environment: Tomcat 6.0, javax.faces.STATE_SAVING_METHOD=server, 
org.apache.myfaces.ALLOW_JAVASCRIPT=false
            Reporter: Thomas Fischer


Situation:
The tag <h:commandLink action="#{someBean.someAction}" 
value="submit"></h:commandLink> is used in a jsp page, which is visited by the 
user. The user clicks on the link.

Expected behaviour:
The method someBean.someAction() should be called, and the navigation rule 
which matches the outcome should determine the page to be displayed.

Wrong behaviour:
The method defined in action is not called and the same jsp page is rendered 
again. 

I did some debugging to find the reason of this problem. It seems to me that 
the server does not recognize that the click on the link is a postback. In line 
172 in org.apache.myfaces.renderkit.html.HtmlResponseStateManager, the HTTP 
Parameter ResponseStateManager.VIEW_STATE_PARAM is checked for existence. If it 
is there, the request is a callback, and if it is not there, the request is not 
treated as postback. This parameter is not encoded in the link rendered by 
h:commandLink, thus the request is not treated as a postback, and the page is 
just rendered again.

If javaScript rendering is allowed, this works fine because the HTTP parameter 
ResponseStateManager.VIEW_STATE_PARAM is rendered as a hidden input field, and 
the javascript code does a form submit.

It seems to me that the problem could be solved by adding the parameter 
ResponseStateManager.VIEW_STATE_PARAM to the generated link (but I did not 
check it).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to