You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Mark Li (JIRA)" <de...@myfaces.apache.org> on 2010/03/31 17:17:27 UTC

[jira] Commented: (MYFACES-2637) Serious Bug! ajax cant work using multiple forms.

    [ https://issues.apache.org/jira/browse/MYFACES-2637?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12851902#action_12851902 ] 

Mark Li commented on MYFACES-2637:
----------------------------------

i like myfaces jsf2, but the debugging takes me too much time. i spend the whole afternoon and night to locate the problem. 

> Serious Bug! ajax cant work using multiple forms.
> -------------------------------------------------
>
>                 Key: MYFACES-2637
>                 URL: https://issues.apache.org/jira/browse/MYFACES-2637
>             Project: MyFaces Core
>          Issue Type: Bug
>          Components: JSR-314
>    Affects Versions: 2.0.0-beta-3
>         Environment: tomcat 6.0.20, java 1.6 (mac osx)
>            Reporter: Mark Li
>            Priority: Blocker
>   Original Estimate: 3h
>  Remaining Estimate: 3h
>
> I am using multiple forms. the second form can submit  correctly first time, but when you submit again, the ajax cant work. 
> you can try following code, first time the form f1 can reRend out1, but then form f1 cant submit any more.
> test.jspx:
> 	<h:head>
> 	</h:head>
> 	<h:body>
> 		<h:outputScript name="jsf.js" library="javax.faces" target="head"/>
>  		
> 		<h:form id="f0">
> 		</h:form>		
> 		<h:form id="f1">
> 			<h:inputText value="#{TestBean.value}"/>
> 			<h:outputText id="out1" value="#{TestBean.value}"/>
> 			<h:commandButton value="click me" onclick="jsf.ajax.request(this,event,{execute:'@form', render:'@form'});return false;"></h:commandButton>
> 		</h:form>
> </h:body>
> The reason i find is that:
> during the first time submit and ajax rendering, the form will lose <input type="hidden" id="javax.faces.ViewState"/> childnode. Then the following submit will not work.
> the code in jsf.js causes this problem:
> jsf.js:
> myfaces._impl.xhrCore._AjaxResponse.prototype.processUpdate = function (request, context, node) {
>         if (node.getAttribute("id") == "javax.faces.ViewState") {
>             sourceForm = document.forms.length > 0 ? document.forms[0] : null;
> ....
> }
> " sourceForm = document.forms.length > 0 ? document.forms[0] : null; " is wrong!
> when there is multiple forms, it will always find the first one.
> Please change this, thx.

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