[
https://issues.apache.org/jira/browse/TAPESTRY-2138?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12566980#action_12566980
]
geoffcallender edited comment on TAPESTRY-2138 at 4/24/08 8:36 AM:
--------------------------------------------------------------------
The reason for testing if (_person == null) is to prevent finding person twice
- before and after a redirect. If page 1 has used page 2's onActivate during
an action request, then you may not want page 2 getting Person again in the
render phase. eg.
void onValidateFromForm() {
try {
_page2.onActivate(_personId);
}
catch (Exception e) {
_form.recordError(e.getMessage());
}
}
Object onSuccess() {
return _page2;
}
As discussed in the mailing list recently, there are reasons you may prefer to
avoid persisting through the redirection, eg. in a clustered environment it
would create more replication traffic.
was (Author: geoffcallender):
The reason for testing if (_person == null) is to prevent finding person
twice - before and after a redirect. If page 1 has used page 2's onActivate
during an action request, then you may not want page 2 getting Person again in
the render phase. eg.
void onValidateFromForm() {
try {
_page2.onActivate(_personId);
}
catch (Exception e) {
_form.recordError(e.getMessage());
}
}
Object onSuccess() throws Exception {
return _page2;
}
As discussed in the mailing list recently, there are reasons you may prefer to
avoid persisting through the redirection, eg. in a clustered environment it
would create more replication traffic.
> @Persist("redirection")
> -----------------------
>
> Key: TAPESTRY-2138
> URL: https://issues.apache.org/jira/browse/TAPESTRY-2138
> Project: Tapestry
> Issue Type: New Feature
> Components: tapestry-core
> Affects Versions: 5.1
> Reporter: Geoff Callender
> Priority: Minor
>
> Suggesting a new persistence strategy, @Persist("redirection"), which is a
> fine-tuning of "flash" to a specific, very common, requirement. It would be
> semantically clearer and less prone to errors than using "flash".
> It's common to want persistence of an object during the redirection portion
> of an action request, and not between render requests. Using "flash" it's
> common to do this:
> @Persist("flash")
> private Person _person;
> void onActivate(Long id) throws Exception {
> _personId = id;
> if (_person == null) {
> _person = getPersonService().findPerson(_personId);
> }
> }
> However, it has a problem - every 2nd time you reload/refresh the page (which
> is a render request), _person will not be refreshed because every 2nd time it
> won't be null. This is disconcerting and pretty much incorrect behaviour.
> A solution is to nullify _person in cleanupRender(). But if we do that then
> we're not really using "flash" any more. It may as well be "session". And
> it's easy to forget to nullify _person, and it's less obvious to the reader.
> So..... how about @Persist("redirection") whose intention is absolutely clear
> and will work correctly without the programmer adding to cleanupRender()?
> To be extra-clever, an enhancement may be to persist it with a temporary
> conversation-id behind the scenes, making it absolutely impossible for two
> windows in the same session to accidentally collide on it during concurrent
> redirections.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]