ok Robert! you are a genious, that did the trick.
for all T5'ers interested in Robert's solution see below both possible
versions.
BUT:
Incidentally, you mentioned validate in your previous e-mail... each form
component fires its own validate event, so the validate event you mentioned
before is not the Form's validate event bubbling down to the components, it's
the validate event fired by each form field.
precisely, this was just an example and an inaccurate one I have to admit.
Can't we just get OPTIONAL event methods on the components to
participate in form handling like
onSuccess
(called before page.onSuccess is executed, which gives components a
change to update the model partly and the page persists everything for
example)
onFailure
(called before page.onFailure, it's more obvious as ommiting calls
to onSuccess in case of errors)
Personally I think this will increase usage of compontents as logical
units by avoiding serialization and customBindings at all? And optional
means we do not break any existing T5 code. Is this something for you
T5-committers to think about or is this absolute nonsense?
thanks
Jens
VERSION 1:
-------------
private static class NewsletterComponentAction implements
ComponentAction<Newsletter>
{
public void execute(final Newsletter c)
{
c._userAccount.setNewsLetter("" + (c._dailyNewsletter ? "1"
: "0") + (c._weeklyNewsletter ? "1" : "0") + (c._monthlyNewsletter ? "1"
: "0"));
}
}
public void setupRender()
{
String newsletter = _userAccount.getNewsLetter();
_dailyNewsletter = newsletter.substring(0, 1).equals("1");
_weeklyNewsletter = newsletter.substring(1, 2).equals("1");
_monthlyNewsletter = newsletter.substring(2, 3).equals("1");
}
public void afterRender()
{
_formSupport.store(this, new NewsletterComponentAction());
}
VERSION 2:
-------------
private static class NewsletterComponentAction implements
ComponentAction<Newsletter>
{
public void execute(final Newsletter c)
{
c._formSupport.defer(new Runnable()
{
public void run()
{
c._userAccount.setNewsLetter("" +
(c._dailyNewsletter ? "1" : "0") + (c._weeklyNewsletter ? "1" : "0") +
(c._monthlyNewsletter ? "1" : "0"));
}
});
}
}
public void setupRender()
{
...
_formSupport.store(this, new NewsletterComponentAction());
}
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org