[richfaces-issues] [JBoss JIRA] Created: (RF-8594) a4j components don't work well inside a custom component

Fabrice Lucien (JIRA) jira-events at lists.jboss.org
Thu Apr 15 05:25:25 EDT 2010


a4j components don't work well inside a custom component
--------------------------------------------------------

                 Key: RF-8594
                 URL: https://jira.jboss.org/jira/browse/RF-8594
             Project: RichFaces
          Issue Type: Bug
      Security Level: Public (Everyone can see)
          Components: component-a4j-core
    Affects Versions: 3.3.3.Final
         Environment: Windows XP, Firefox 3.6 and IE6
Tomcat 6
            Reporter: Fabrice Lucien


When I use a <a4j:function> inside a custom component (with or without facelet), the ajax request doesn't work well.
When it's used in a page there're no problem, but the same code copy-paste inside a facelet template for a component for example doesn't work.
Then I tried to create a component without facelet with java code, and I hade the same behavior.
The code generated is nearly the same.

The first problem I saw when filtering requests is the absence of requests for the javascript files.
These 3 GET requests are not done:
http://xx/a4j/g/3_3_0.GAorg.ajax4jsf.javascript.AjaxScript
http://xx/a4j/g/3_3_0.GAorg/ajax4jsf/javascript/scripts/form.js
http://xx/a4j/g/3_3_0.GAorg/richfaces/renderkit/html/scripts/skinning.js

To have a woraround I put my custom component on a page using directly a4j.
Then when I have the script file, the POST method was done but there were no server side effect.
My scenario was the update of an attribute of a backing bean with:
-a4j function and a param
-an input test and a a4j commandButton

I both case when I was able to do the POST for the ajax request, there was no server side effect.

Here is the content of my web page:
{code}
<body>
<f:view>

	<!-- Simple case reproduced in my component-->
    <a4j:form>
       <h:inputText value="#{headerState.activatedHeaderId}" />
       <a4j:commandButton value="Say Hello" />
    </a4j:form>

	<!-- My component that generates the same code-->
	<jtbox:uiUpdater/>
	
</f:view>
</body>
{code}

Here is the code of the encoding method of the component
{code}
		AjaxForm a4jForm = new AjaxForm();
		
		HtmlInputText headerId=new HtmlInputText();
		ValueExpression veHeaderId = context.getApplication()
		.getExpressionFactory().createValueExpression(
				context.getELContext(), "#{headerState.activatedHeaderId}", HeaderState.class);
		headerId.setValueExpression(UIHeader.FAMILY_NAME, veHeaderId);
		
		HtmlAjaxCommandButton headerIdCommand=new HtmlAjaxCommandButton();
		headerIdCommand.setValue("update");
		a4jForm.getChildren().add(headerId);
		a4jForm.getChildren().add(headerIdCommand);
		a4jForm.encodeAll(context);
{code}


Here is the code generated when using directly a4j
{code}
<form action="/header-component/faces/pages/home3.jspx" method="post" name="j_id2" id="j_id2" target="">
<input type="text" name="j_id2:j_id3">
<input type="button" value="Say Hello" onclick="A4J.AJAX.Submit('_viewRoot','j_id2',event,{'similarityGroupingId':'j_id2:j_id4','parameters':{'j_id2:j_id4':'j_id2:j_id4'} ,'actionUrl':'/header-component/faces/pages/home3.jspx'} );return false;" name="j_id2:j_id4" id="j_id2:j_id4">
<input type="hidden" value="j_id2" name="j_id2">
<input type="hidden" value="" name="autoScroll">
<script type="text/javascript">function clear_j_id2() {
_clearJSFFormParameters('j_id2','',['j_id2:j_idcl','j_id2:_link_hidden_']);
}
function clearFormHiddenParams_j_id2(){clear_j_id2();}
function clearFormHiddenParams_j_id2(){clear_j_id2();}
clear_j_id2();</script>
<input type="hidden" value="H4sIAAAAAAAAAJVVzW8bRRQfb+LWcRBNGqkKgkhOE1WlVJsvFyFCoU7S4AUnRLEbQXNIJrtje816d5idtTeNKGklQIIDRVAEUioq4Nie+AeKKoGEVBCRuHBAFReExIeEkPg4ADNj74ftTQtzGL8dv495v/d7b679BOI2AccsUpJhBbrpil2UIcaGrkKqW6ZcIAjlKXFU6hC0aGno4hu/vHuzOJK4BwAXnwMgJoORFmvVqmLLRCaVM+xoRUf1ZcuioGet5omNJYHRPezKtGoI43mLVEG8sqZrk76RuCrR1XIRqshut8qyTTGxQwvIpQ3TKeCtiTvF45Y85qxVrUJTm3EotcyGh7TvYYoZyXZJ1TdkldhyhW5Yrlxy9MCZLZcR1BCRzyhnsAYpIg0fJzwXrkPAwGquAmtQNqBZkp/ZqCCVTl/64tn3++wHDYnjyjN1XgDnWb5hqcuXEoGEcRhcfpxgFe0PAsxYloGgeStFtr/e+etnCcTOgngNGg5ycczmBj2AO0lmCwu5tZlMXpmloH8MwxKyx8pWFU3JFRu7zGmfcOpQ3ZBzlgoNdP6P/vWd8T9/lEC3AhJlaJdVRpEc2K9ajknJJgUHRaZj/CJjjEe6WZrOgQT/dJh/HvwAU69BokNTXP6Ai/9hi7GEAgmZ/Ki/NR/FpKiEyMHvrn70+4VXH2H5KF4+3hWF3qJT3UDklWuXh3rfvv26h2sSY+ZuIMgkQwjczOk2dS/sDr33GbzSxR122/o5JAxi9W6+M6Mj3MiV24mXp6zMWctgVc/DGiLPff7xybd2bi1IQMqBHtWAtr0Iq16uSZvpaMKmFZ0mD1xxv/FWlqMaD7SMTBZjicGMZr3o/OLIROTb4y+tVz+9/ptI0/XZEedCr9hwIIqiHwrlxr8HhcIDbgTvAikV8M4vikAxy2q/AHF8/zef3Dy0/lUXkOZB0rCgNg9VahEF9NAyQXaZweTiJ06JVthXT3BHPAAFg6K1HFPAayDWSAuZ5afXlDkKEmmopdXxYjFKK7O0lFNOz7HbjHX8p1exIc+hInQMOt84HM2w4bZZsJ5HZnbny7lp852rYpLV74+gPIPmKLhxect1cXOYTPL0H+JbUiBJwX0tQ4VPrEaZEME4BHnUhvfQwGKJogxsM3SCw7azO5Zq2JfujRogwtVoRyVi/PiIj7k6GeZD2+Rq9vP13ZXvfxjaetLrsBhttqNv6RGM91BHkZAhF2BphRucdjHjiM3eneawjPHaEDDYaDym2aZWT26v3r7x95uSUBvw1QKND19+Lf/r2d3HxOVY/GFRLgzVMorwpzDCDE88dekD/aLEQ/NrP15Pg9TIVmOsi76VGaX1GhO0rDhUtBfDc6fRyBi79VmQ6eBU6tTkxPGH0ymB0MnDd3N8mD1jvYJ5j4rHzHvUwhTsC88l/vB18gp37IGDgF7hzyj6+attlLSq+WUHEayc8KV9/5eL2gRvwxAY6SYY6TAYezzyttzxuEf2KXtL83AzlUWGYeF2/Jop/he5bbXDFAFbxxH/yUZAGLsrcFIrcFAAdJRvx/xJdoJ/rgbINePhfwHiKP3AEgoAAA==" id="javax.faces.ViewState" name="javax.faces.ViewState">
</form>
{code}


Here is the code generated when using my component
{code}
<form action="/header-component/faces/pages/home3.jspx" method="post" name="j_id7" id="j_id7" target="">
<input type="text" name="j_id7:j_id8">
<input type="button" value="value" onclick="A4J.AJAX.Submit('_viewRoot','j_id7',event,{'similarityGroupingId':'j_id7:j_id9','parameters':{'j_id7:j_id9':'j_id7:j_id9'} ,'actionUrl':'/header-component/faces/pages/home3.jspx'} );return false;" name="j_id7:j_id9" id="j_id7:j_id9">
<input type="hidden" value="j_id7" name="j_id7">
<input type="hidden" value="" name="autoScroll">
<script type="text/javascript">function clear_j_id7() {
_clearJSFFormParameters('j_id7','',['j_id7:j_idcl','j_id7:_link_hidden_']);
}
function clearFormHiddenParams_j_id7(){clear_j_id7();}
function clearFormHiddenParams_j_id7(){clear_j_id7();}
clear_j_id7();</script>
<input type="hidden" value="H4sIAAAAAAAAAJVVzW8bRRQfb+LWcRBNGqkKgkhOE1WlVJsvFyFCoU7S4AUnRLEbQXNIJrtje816d5idtTeNKGklQIIDRVAEUioq4Nie+AeKKoGEVBCRuHBAFReExIeEkPg4ADNj74ftTQtzGL8dv495v/d7b679BOI2AccsUpJhBbrpil2UIcaGrkKqW6ZcIAjlKXFU6hC0aGno4hu/vHuzOJK4BwAXnwMgJoORFmvVqmLLRCaVM+xoRUf1ZcuioGet5omNJYHRPezKtGoI43mLVEG8sqZrk76RuCrR1XIRqshut8qyTTGxQwvIpQ3TKeCtiTvF45Y85qxVrUJTm3EotcyGh7TvYYoZyXZJ1TdkldhyhW5Yrlxy9MCZLZcR1BCRzyhnsAYpIg0fJzwXrkPAwGquAmtQNqBZkp/ZqCCVTl/64tn3++wHDYnjyjN1XgDnWb5hqcuXEoGEcRhcfpxgFe0PAsxYloGgeStFtr/e+etnCcTOgngNGg5ycczmBj2AO0lmCwu5tZlMXpmloH8MwxKyx8pWFU3JFRu7zGmfcOpQ3ZBzlgoNdP6P/vWd8T9/lEC3AhJlaJdVRpEc2K9ajknJJgUHRaZj/CJjjEe6WZrOgQT/dJh/HvwAU69BokNTXP6Ai/9hi7GEAgmZ/Ki/NR/FpKiEyMHvrn70+4VXH2H5KF4+3hWF3qJT3UDklWuXh3rfvv26h2sSY+ZuIMgkQwjczOk2dS/sDr33GbzSxR122/o5JAxi9W6+M6Mj3MiV24mXp6zMWctgVc/DGiLPff7xybd2bi1IQMqBHtWAtr0Iq16uSZvpaMKmFZ0mD1xxv/FWlqMaD7SMTBZjicGMZr3o/OLIROTb4y+tVz+9/ptI0/XZEedCr9hwIIqiHwrlxr8HhcIDbgTvAikV8M4vikAxy2q/AHF8/zef3Dy0/lUXkOZB0rCgNg9VahEF9NAyQXaZweTiJ06JVthXT3BHPAAFg6K1HFPAayDWSAuZ5afXlDkKEmmopdXxYjFKK7O0lFNOz7HbjHX8p1exIc+hInQMOt84HM2w4bZZsJ5HZnbny7lp852rYpLV74+gPIPmKLhxect1cXOYTPL0H+JbUiBJwX0tQ4VPrEaZEME4BHnUhvfQwGKJogxsM3SCw7azO5Zq2JfujRogwtVoRyVi/PiIj7k6GeZD2+Rq9vP13ZXvfxjaetLrsBhttqNv6RGM91BHkZAhF2BphRucdjHjiM3eneawjPHaEDDYaDym2aZWT26v3r7x95uSUBvw1QKND19+Lf/r2d3HxOVY/GFRLgzVMorwpzDCDE88dekD/aLEQ/NrP15Pg9TIVmOsi76VGaX1GhO0rDhUtBfDc6fRyBi79VmQ6eBU6tTkxPGH0ymB0MnDd3N8mD1jvYJ5j4rHzHvUwhTsC88l/vB18gp37IGDgF7hzyj6+attlLSq+WUHEayc8KV9/5eL2gRvwxAY6SYY6TAYezzyttzxuEf2KXtL83AzlUWGYeF2/Jop/he5bbXDFAFbxxH/yUZAGLsrcFIrcFAAdJRvx/xJdoJ/rgbINePhfwHiKP3AEgoAAA==" id="javax.faces.ViewState" name="javax.faces.ViewState">
</form>
{code}

Here is the POST method(working) generated with the direct USE of a4j
{code}
<?xml version="1.0"?>
<html xmlns="http://www.w3.org/1999/xhtml"><head><link class="component" href="/header-component/faces/a4j/s/3_3_0.GAorg/richfaces/renderkit/html/css/basic_classes.xcss/DATB/eAELXT5DOhSIAQ!sA18_" rel="stylesheet" type="text/css" /><link class="component" href="/header-component/faces/a4j/s/3_3_0.GAorg/richfaces/renderkit/html/css/extended_classes.xcss/DATB/eAELXT5DOhSIAQ!sA18_" media="rich-extended-skinning" rel="stylesheet" type="text/css" /><script src="/header-component/faces/a4j/g/3_3_0.GAorg.ajax4jsf.javascript.AjaxScript" type="text/javascript">
</script><script src="/header-component/faces/a4j/g/3_3_0.GAorg/ajax4jsf/javascript/scripts/form.js" type="text/javascript">
</script><script src="/header-component/faces/a4j/g/3_3_0.GAorg/richfaces/renderkit/html/scripts/skinning.js" type="text/javascript">
</script><meta name="Ajax-Update-Ids" content="" /><title></title></head><body><span id="ajax-view-state"><input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="H4sIAAAAAAAAAJVVzW8bRRQfb+LWSYAmjVQFQSSniapSqnU+XIQIhTpJgxecEMVuBM0hmeyO7TXr3WF21t40oqSVAAkOFEERSEFUwLE98Q8UVQIJqSAiceGAKi4IiQ8JIfFxAGbG3g/bmxbmMH47fh/zfu/33lz9CcRtAo5ZpCTDCnTTFbsoQ4wNXYVUt0y5QBDKU+Ko1CFo0dLQxdd/eedGcTRxFwAuPgdATAajLdaqVcWWiUwqZ9jRio7qy5ZFQc9azRMbSwJje9iVadUQxvMWqYJ4ZU3XJn0jcVWiq+UiVJHdbpVlm2JihxaQSxumU8BbE7eLxy15zFmrWoWmNuNQapkND2nfwxQzku2Sqm/IKrHlCt2wXLnk6IEzWy4jqCEin1HOYA1SRBo+TnguXIeAwdVcBdagbECzJD+9UUEqnb70xTPv99sPGBLHlWfqPA/Os3zDUpcvJQIJ4zC4/DjBKjoQBJixLANB82aSbH+989fPEoidBfEaNBzk4pjNDXoAd9KbLSzk1mYyeWWWgoEUhiVkp8pWFU3JFRu7zGm/cOpQ3ZBzlgoNdP6PgfWd8T9/lEC3AhJlaJdVRpEc2K9ajknJJgUHRaYpfpEU45FulqZzIME/HeafBz/A1GuQ6NAUlz/g4n/YYiyhQEImPxpozUcxKSohcvC7Kx/9fuGVh1k+ipePd0Wht+hUNxB5+erl4b63br3m4Xo3xszdYJBJhhC4mdNt6l7YHX73M/heF3fYbevnkDCI1bv5zoyOcCNXbidenrIyZy2DVT0Pa4g8+/nHJ9/cubkgASkHelQD2vYirHq59tpMRxM2reg0eeCK+423shzVeKBlZLIYSwxmNOtF5xdHJiLfHn9xvfrptd9Emq7PjjgX+sSGA1EU/VAoN/49JBTudyN4F0jJgHd+UQSKWVb7BYjj+7/55Mah9a+6gDQPeg0LavNQpRZRQA8tE2SXGUwufvyUaIV99QR3xANQMCRayzEFvAZijbSQWX5qTZmjIJGGWlodLxajtDJLSznl9By7TarjP72KDXkOFaFj0PnG4ViGDbfNgvUcMrM7X85Nm29fEZOsfl8E5Rk0R8H1y1uui5vDZJKn/yDfegWSFNzbMlT4xGqUCRGMQ5BHbXgPDSyWKMrgNkMnOGw7u22pRnzpnqgBIlyNdVQixo+P+Jirk2E+tE2uZj9f2135/ofhrSe8DovRZjv6lh7BeA91FAkZcgGWVrjBaRczjtjs3WkOyxivDQFDjcZjmm1q9d7t1VvX/35DEmqDvlqg8eFLr+Z/Pbv7qLgciz8iyoWhWkYR/hRGmJGJJy99oF+UeGh+7cfqaZAc3WqMddG3MqO0XmOClhWHivZCeO40Ghljtz4LMh2cSp6anDj+UDopEDp5+E6OD7NnrE8w7xHxmHmPWpiC/eG5xB++Tl7hjj1wENAr/BlFP3+1jZJWNb/sIIKVE7607/9yUZvgbRgCI90EIx0GY49H3pY7HvfIPmVvaR5uJrPIMCzcjl8zxf8it612mCJg6zjiP9kICGN3BE5qBQ4KgI7y7Zg/yU7wz9UAuWY8/C8YYlxSEgoAAA==" /></span><meta id="Ajax-Response" name="Ajax-Response" content="true" /></body></html>
{code}


Here is the POST method(not working) generated with my component
{code}
<?xml version="1.0"?>
<html xmlns="http://www.w3.org/1999/xhtml"><head><link class="component" href="/header-component/faces/a4j/s/3_3_0.GAorg/richfaces/renderkit/html/css/basic_classes.xcss/DATB/eAELXT5DOhSIAQ!sA18_" rel="stylesheet" type="text/css" /><link class="component" href="/header-component/faces/a4j/s/3_3_0.GAorg/richfaces/renderkit/html/css/extended_classes.xcss/DATB/eAELXT5DOhSIAQ!sA18_" media="rich-extended-skinning" rel="stylesheet" type="text/css" /><script src="/header-component/faces/a4j/g/3_3_0.GAorg.ajax4jsf.javascript.AjaxScript" type="text/javascript">
</script><script src="/header-component/faces/a4j/g/3_3_0.GAorg/ajax4jsf/javascript/scripts/form.js" type="text/javascript">
</script><script src="/header-component/faces/a4j/g/3_3_0.GAorg/richfaces/renderkit/html/scripts/skinning.js" type="text/javascript">
</script><meta name="Ajax-Update-Ids" content="" /><title></title></head><body><span id="ajax-view-state"><input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="H4sIAAAAAAAAAJVVzW8bRRQfb+LWcRBNGqkKgkhOE1WlVOt8uAgRCnWSBi84IYrTCJpDMtkd22vWu8PsrL1pREkrARIcKIIikFJRAcf2xD9QVAkkpIKIxIUDqrggJD4khMTHAZgZez9sb1qYw/jt+H3M+73fe3PtJxC3CThmkZIMK9DNVOyiDDE2dBVS3TLlZYJQgRJHpQ5BC5aGLr7xy7s3iyOJewBw8TkAYjIYabFWrSq2TGRSOcuOVnRUX7IsCnrWap7YWBIY3cOuTKuGMJ6zSBXEK2u6NuEbiasSXS0XoYrsdqsc2xQTO3QZubRhOgm8NX6neNySx5yxqlVoatMOpZbZ8JDxPUwyI9kuqfqGrBJbrtANy5VLjh44s+Uyghoi8hnlDNYgRaTh44TnwnUIGFjNV2ANygY0S/IzGxWk0qlLXzz7fp/9oCFxXHmmzgvgPMs3LHX5UiKQMA6Dy48TrKL9QYBpyzIQNG+lyPbXO3/9LIHYWRCvQcNBLo7Z3KAHcCfJ3PJ8fm06W1BmKOhPY1hCdrpsVdGkXLGxy5z2CacO1Q05b6nQQOf/6F/fGfvzRwl0KyBRhnZZZRTJg/2q5ZiUbFJwUGSa5hdJMx7pZmkqDxL802H+efADTL0GiQ5NcfkDLv6HLcYSCiRk8qP+1nwUk6ISIge/u/rR7xdefYTlo3j5eFcUegtOdQORV65dHup9+/brHq59GDN3A0EmWULgZl63qXthd+i9z+CVLu6w29bPIWEQq3fznRkd4Uau3E68AmVlzlkGq3oB1hB57vOPT761c2teAlIe9KgGtO0FWPVyTdpMRxM2reg0eeCK+421shzVeKAlZLIYiwxmNONF5xdHJiLfHn9pvfrp9d9Emq7PjjgXesWGA1EU/VAoN/49KBQecCN4F0ipgHd+UQSKOVb7eYjj+7/55Oah9a+6gDQHkoYFtTmoUosooIeWCbLLDCYXP3FKtMK+eoI74gEoGBSt5ZgCXgOxRprPLj29psxSkMhALaOOFYtRWtnFxbxyepbdJt3xn17FhjyLitAx6FzjcDTLhtvmsvU8MnM7X85Ome9cFZOsfn8E5Rk0R8GNy1uui5vDZIKn/xDfkgJJCu5rGSp8YjXKhAjGIcijNryHBhZLFGVgm6ETHLad3bFUw750b9QAEa5GOyoR48dHfMzViTAf2iZXs5+v7658/8PQ1pNeh8Vosx19S49gvIc6ioQMeRmWVrjBaRczjtjs3WkOyxivDQGDjcZjmm1q9eT26u0bf78pCbUBXy3Q+PDl1wq/nt19TFyOxR8W5cJQLaMIfwojzPD4U5c+0C9KPDS/9uP1DEiNbDXGuuhbmVFarzFBy4lDRXsxPHcajYyxW58B2Q5OpU5NjB9/OJMSCJ08fDfHh9kz1iuY96h4zLxHLUzBvvBc4g9fJ69wxx44COgV/oyin7/aRkmrml92EMHKcV/a93+5qI3zNgyBkWmCkQmDsccjb8sdj3tkn7K3tAA3UzlkGBZux6+Z4n+R21Y7TBGwdRzxn1wEhLG7Aie1AgcFQEf5dsyfZCf452qAXDMe/hf774rPEgoAAA==" /></span><meta id="Ajax-Response" name="Ajax-Response" content="true" /></body></html>
{code}

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       



More information about the richfaces-issues mailing list