On Feb 14, 2006, at 8:19 PM, Shawn Church wrote:
Typically, pageBeginRender is invoked to initialize the page from
properties which (by this time) have already been set either by a
calling page, by a previous render, or by external page
initialization (by implementing IExternalPage). After page
rendering is complete, the rendered response is sent to the
client. The rewind phase is only invoked if a form is submitted.
In this case, the form's listener method is invoked (where you can
do whatever you like with the submitted form values), after which
pageBeginRender will again be invoked to render the page.
Tapestry makes all of what you are trying to do very simple, but it
is important to understand exactly how it works. Tapestry in
Action covers all of this for Tapestry 3, and Kent Tong's book is a
tremendous resource for Tapestry 4.
There is a gotcha that I just spent the last week or so being very
annoyed by (I'm still in Tapestry 3.0.3).
I had a String[] of values. I was populating the array in
pageBeginRender() and then passing the values so gotten to the next
page in the form's listener.
I tried
<span jwcid="@base:For" source="ognl:vals" value="ognl:val">
<input type="text" jwcid="@TextField" value="ognl:val" />
</span>
Unfortunately, vals[0]-vals[n] were not getting updated...they were
exactly what they used to be. So I tried updating the array directly
<span jwcid="@base:For" source="ognl:vals" index="ognl:i">
<input type="text" jwcid="@TextField" value="ognl:vals[i]" />
</span>
This seemed to update the array correctly, but my handle to the array
became null and any calls to getVals()[0] in the listener returned an
NullPointerException. Now, vals was not a persistent property, so it
was getting lost. I could either make it persistent (back button
nightmares) or the following, which finally worked:
<input type="hidden" jwcid="@Hidden" value="ognl:vals">
<span jwcid="@base:For" source="ognl:vals" index="ognl:i">
<input type="text" jwcid="@TextField" value="ognl:vals[i]" />
</span>
Now I could access the array using getVals() in the listener method
and it contained the updated values.
Did I do something wrong or is this just way more convoluted than it
should be? Or would ListEdit have saved me some trouble?
Todd
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]