users@woodstock.java.net

[SOLVED] Re: AJAX responses missing <state> element

From: Ryan de Laplante <ryan_at_ijws.com>
Date: Wed, 11 Jun 2008 15:17:35 -0400

I think I've got the problem figured out because I am now able to get
the client side components to refresh based on the AJAX response. I had
to add an init-param to FacesServlet:

<servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <init-param>
            <param-name>javax.faces.LIFECYCLE_ID</param-name>
            <param-value>com.sun.faces.lifecycle.PARTIAL</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

I found this solution by comparing a new Visual Web JSF project in
NetBeans 6.0.1 to my existing Visual Web project that has been around
since NB 5.5 days.

Now I have to fix some logic bugs. Also I haven't got the dojo client
side event listener stuff working yet.


Ryan


Ryan de Laplante wrote:
>
>> The Dynamic Faces life cycle also includes an XML state element
>> containing an encoded client state string (i.e., the state of the
>> entire JSF component tree). However, client state is maintained by
>> the Dynamic Faces JavaScript.
> https://woodstock.dev.java.net/docs/specs/ajax-architecture-spec.html
>
>
> Below is the captured response of a DropDown in my sample
> application, which works fine.
>
>> <partial-response><components><render
>> id="form1:prox"><markup><![CDATA[{"id":"form1:prox","widgetType"
>> :"webui.suntheme.widget.dropDown","visible":false,"tabIndex":-2147483648,"labelOnTop":true,"submitForm"
>>
>> :false,"label":{"id":"form1:prox:prox_label","valid":true,"level":2,"visible":true,"widgetType":"webui
>>
>> .suntheme.widget.label","value":"Proximity To Elevator
>> ","htmlFor":"form1:prox_list","required":false
>> },"multiple":false,"disabled":false,"options":[{"selected":false,"isTitle":false,"value":"","label":""
>>
>> ,"group":false,"escape":false,"disabled":false,"separator":false},{"selected":false,"isTitle":false,"value"
>>
>> :"beside","label":"Beside","group":false,"escape":false,"disabled":false,"separator":false},{"selected"
>>
>> :false,"isTitle":false,"value":"near","label":"Near","group":false,"escape":false,"disabled":false,"separator"
>>
>> :false},{"selected":false,"isTitle":false,"value":"far","label":"Far","group":false,"escape":false,"disabled"
>>
>> :false,"separator":false}],"size":1}]]></markup></render></components><state><![CDATA[H4sIAAAAAAAAAO0abWwcxXXu7PN3Q0gIkBaSIw0xgebO92UnZxMSx3ZycLZT20kgiDp7t2PfJnu3y
>>
>> +6c70zkCH7QVqVFraBSK4KghUr9AX/aP4gfkFK1qCAqgdT+qISEqkoVEm2lCom2P0rfm73d29vbO9+dP5KgnqzZWe97b968r3nzZl75G
>>
>> /HlNbL94eR5YUkIyEJuMTCdOk/TbPj7v3/wha36ftlLSFElhOzTNRJJK9mAns8FFoQ01QOCqspSWmCSkgvMMoHRSSEnLFItkVXlvXMapVOKSD9deP2NVweOv9mHdApnCP6OV9KhRUZzOlABkksCE7QAfFeVHM0xPXBS0JgkyHOasEQ1XZBPS7QwoygMByFd5
>>
>> +clEf7CRf1Rcol4Cwc4fb9Jv0BTeSlwXl8oUwSCi5T4VGhDdixPfawTLCsTXwbaCizvKlhUEAEL2gqstvpYSSl3gfhkaC2sMMfaU
>>
>> w9rNq1JKrNEMtQEm6OKuEx8KWgr2OyojzWhaFniW4DWwooBVifZWw9rTFPUMaWQI91iqQfYGok2YVoTAMLQtt599t3np8NjT6NtGQwcAQa6yB11pSukqExusEafl
>>
>> /k/OoznmmZSMsM+zkZPU2yE15GNiJ2NvqbYiLizEeds7McgUSxpqEwCnYL7x0khR+XjmpJXSXfJCkMxk8Q+ILGF7HIncSoxnWdqnoEeNwU8yMEbE2tbioqmQFEO2xoRaDcguYvympJDqAk5
>>
>> +GS6ZE6jrzACmLc0IolejnYdyGKgCVm0q5pSNEUxDIi3NSKKHsS6GpIY5u7bX3dV1JRFjer6qKCRPrX8ErKbSmf9FWg0z5iSI50p
>>
>> /mwdM9wyZqRlzGjLmLFiHjHx57V6XeUeLG438uwqzySIk4KemRRUX+effvXrm8+930a8E6RHVgQRFjWmaAnSzTIg+owii0X1viOcREehiy9rMAAje
>>
>> +1KB+5gpQwcOzUzMz41N386MX5mfmZ6eg4HDzLid4Odnjw5PYXQibFZ4G17mbejmiYsJyWdFZ/44PYfvy0830Y8CdKuS49RngJ6Cu2YXDEzeyra0o0wDhm15sozyVFFkamQe8
>>
>> +vPf6Hy//5u5d4zhLfkiDngZyHiztGVKDRc2JuMjk/enQ2cQxegpighUDkKlDbWuYuqaQFmV76143nLg/8+xMvaU+QrgxIMw2JQJJ0ppV8jmnLjGzjuWwQOQjOMk3KLQ4nSRe
>>
>> +5oEwjgrvnUuCJgk5xl+L6ufwY8R77Cg0oGFCKieSyDEKyce2P7/48mdPfOugF8VSmojJIoebymdTVPvmKz+8vffZj54yM+evqKpqmYPHxVh8NmPB3oEqvXvw3wP8Y6hCEUZCardARzZfksCrH5z
>>
>> +68e3Xzxu8uRhYL5SToRvZdZg0vvcQwpPwU6ATVJtFvPwh9755b3PXH5v0ku8SdKdlgVdnxKypnB7dIAROQ4jNxvqkJTgLAWRy9JjQkqmIHNU7y7TzagcOI3yHC
>>
>> +qGHgg7cNMr+31n6d23/m7H2F+p5FbDd6qQQs9jz/80ZX//sDLwbZbYGWIl578zuw/z34wwqcPyfSWr140rIwb8srqGwZV5QlmxGoGsRmC6VVjcnj
>>
>> +2dHUNYK2Zo3AWzYC3F8wM4F3hqMHTNRJm6axN63yx4xdHtyeVpEHpnoleSSspo48DHjVZc7l3o7WZ8/3SfZ9z9oEgLJcTQAAUxLAI1ZTTwAIXzYD1dU4yjRW
>>
>> /+CEqyvazrJonTpoSjJczqtIBneuJclcsJo6kjHgVVwEdgbBV5W8BoEnqLNlGdZASlkgretlronL9NpbDp4daDHhGCxj+Em2GpPfW6v5NfbYqt2a3Xja2XpAN7bTazJhHgZWURTu
>>
>> +EuK+obV1FGUAW/+YPGQchK7a/+w+b7tANZnDsjCspJncf+iJokOKx909OoGw1ubFWCvKcByVcHWD9v6EVPxg8y2S2WVSS+zklirF7Z6EasXZeUkcE0q41pfRWVYbimp7LtWU0dlHN4edap
>>
>> +LgGkp66Hdbv0drmsYFvcVjW34AP5rE9iNKtXCspbKag99iCkMxDUVme5EgRTiRMn20wcyyJWGtvdAS1GbuAqiVu4SPU5u8Rd9nsFSVykdjqQSDrCtVrVOgHMaWhkty05mqQso4iV2dGHM5cO9j30zD
>>
>> +M7GinlfY4YX8RfOepv3wWfdpbqpLNFQ6QO6uEMw/2D7FX57nVsQyIlq6Q9iVFEsvmzMgee34IG3sQmw1hHP8B4rObHSM7YG9ZlLISW
>>
>> /bPKf5xmS4JsNPh8zzyODFEhHB3WLwY1ESIL36NsryW8y8Isk6H3Y2XkbtlugBRJxwaVIvDfqaocX/0IHZVRZewhhj3CyldkfOMq
>>
>> s5xXaLUoAPGDcTlg61RK5YIW4Rj5sbfxc9ucvUaEMxuhy3GHbVLVlXNtBvqrpqGyqsShiTftsnBmD2yxsk4xV35gu2lTQ4a2HmtmYgRbjFihNcQMfiG
>>
>> +HKlrbxpiO5Ky0EBH2+5uW+4EffFzm+r3NM3ISt13TG8Du54aHCj3LF+4rwJ7hiOO2r4rKqqX8niHw1pffKFdrlIiy4XWYPL8Y3585vlcpHWXa5rlIr
>>
>> +uWWVOq2/RnrGyD3VLhWKRr+wPhWJOw6kWNURlZtPebZunE+1sHk+THaaRqMpSnZaRT3p/JRshdxRq3h/zOzbTdzaqCDlF8pzZ0aZ0qTDD98qFLPFZVINlJpAiVRPCyULjREs9faVWQlFVTsPW
>>
>> +08zNEiQ5UmRxhW+vwpRROpdm//QL8/TWVZFUSsOlrvuiqkrXcsJN7bz/FmlMJJqk1IVBb7D/fU0k9jVTNPAJugcxIx2yQQIIRsd48w7fAIEzdozEG3MTtGUlqw9oDrFNhr63rH
>>
>> /Mz41Nj4zPjY/NSpZHL+9NHkqfF5Q/UenEG3MYMUFRk/D3XEWEcdo+QGjMSqdwvOzYkteOLJA81RzeFObxXuJvuq/cg1+pLqyIvs
>>
>> +x7NU5pregmwRwjYj91kO4uQcheoiAz37Z995P5z397TxivLOPs2e127vIRlFRH2ZgbvF/veyH3vN6ErXtKRIL1SFqZ2gkqLGZYgPfztjCSyzFnSrVNV0HC3lIR9crZ8fNHFX47KrPTeyRRFZhLndxg2g7fZBW
>>
>> +MPEtlWIITsNnuu/vTDz8eytziJb6zpEuUdHQ38azp8UnSK0IPC13AamkAnxVz8YUffVSetJRuDeHhQnnBvfJ56UdAlqhMz2n4DPr4OurD1EsNoPYHICzA4wI87CDFOusnI
>>
>> +/oGaUwmteXEzkRL5AoGqatopLOZ9H8YNsDG1Dsji4nxLv6DbvmR9T9+wMaXcCzN/PfYOhfswGU+niI2786TQOsOZKNpNfq9biD3W7NPm5djGC2SxKui
>>
>> /m59V7M1xS4h9wCd+9IEFeL4IYtFwerR8XHwQ0Z7JD7YIev0rqEY+PZkud+ZLTX5jasdBmloWUIKUyv95pSKammFxPkaY4z2W5FPPxyH29qBMSeE7BE
>>
>> +PluHcJiBl5qAPZNUlHKZ03QtiwVa0B2J5WCBSYrBUec7eWf/EmUdXWoXWol1P4/LNrC4i22Ocdt96RYxa0p1+D43LUUHMMD7pGDbchgoU2MieHwtRUTa
>>
>> +XqnEnkvafsOsy4puYIkupViV0do1SXRMgZO1K8Uyvnm6ICBrccPGqAtE0gRNtCJUCx0WOGGhWWdQgfm1802VHWdbx8tZDZ7xm6xo73r6nYEdnM2BGtHgy3
>>
>> /EFecqidw3250UJp/YLQEbLDunhkO21eafhqJjf0bZbaLQpI/sXyzJhbDbV06FNBTcXpb5kT9Av+CUGCXaBfYLUdwfnFtJ3e14x3RiYyfBsb9w8NYG3SKFqGIhGraBmpcQ4w7C
>>
>> /gljfuDx8CTKczgneoQl7H6kP76KnZh2qzVEuBe13+17EWVQ6SrdZ9C+OmwEojl0a5Ar9USnoMPKT3E7vudtfUnUmjojTsO4micb9UVOO
>>
>> /jIytnqZZxgXpGpd+nfMft1EYucdNz4ZNRGOOQnad+HsVlRpuUan88O+nFaHG2+3QW8cM1UEFTSpuvDnFaXyM9dRcLBa+HjQXaVFz
>>
>> /AzppVU0d0zIpc2T843SXJqPsWE+dyh8rWou2qLmokjv5fqaaz8BuWeTenuwOb3plMESq+p3XdyzJOkSpBV74lx1K+vphEPXhSpjLaoyhvR
>>
>> +tooqZzNKoUlVnlm7KpmWX1dNDg6Fm9Tk/wD1AmaFtDsAAA==]]></state></partial-response>
>>
> The sample application code was designed to be copy/pasted into the
> real application once I got it working. When I make a selection in
> the real application, I see the AJAX-request being sent, the response
> coming back, but no <state> element:
>
>> <partial-response><components><render
>> id="form1:FLOORLEVEL"><markup><![CDATA[<span id="j_id124"><script
>> type="text/javascript">
>> //<![CDATA[
>> webui.suntheme.widget.common.createWidgetOnLoad("j_id124",{"id":"form1:FLOORLEVEL","widgetType":"webui
>>
>> .suntheme.widget.dropDown","visible":false,"onChange":"document.getElementById('form1:SMOKE').refresh
>>
>> ('form1:BEDTYPE,form1:ELEVATOR,form1:FLOORLEVEL,form1:SMOKE');
>> return false;","tabIndex":-2147483648
>> ,"labelOnTop":true,"submitForm":false,"label":{"fragment":"<label
>> id=\"form1:FLOORLEVEL:FLOORLEVEL_label
>> \" for=\"form1:FLOORLEVEL_list\" class=\"LblLev2Txt_sun4\">Floor
>> Level <\/label>"},"multiple":false,"disabled"
>> :false,"options":[],"size":1});
>> //]]]]><![CDATA[>
>> </script></span>]]></markup></render></components>
>
> What's more interesting is even though I get the value change events
> for each of the DropDowns, when the form is finally submitted only the
> first one has a value. The rest are stored as null.
> Firebug is able to show me the response data from my test
> application. Whenever I click on any of the request/response pairs, I
> can see the stuff I pasted above. In my real application, often it
> says "Loading..." as if the server hasn't responded yet. Sometimes it
> will show me the response for the first request but not the other two.
>
> I've spent more than a day looking at this, and will continue looking
> at it until it works. I'm just hoping someone might recognize
> something I did wrong, because this stuff is supposed to be easy.
> It's not supposed to be endless problems one after the other. I've
> spent a week trying to make 4 dynamically rendered dropdown lists work
> with AJAX!
>
>
>
> Thanks,
> Ryan
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_woodstock.dev.java.net
> For additional commands, e-mail: users-help_at_woodstock.dev.java.net
>
>