An addendum to my earlier note, to file under "curiouser and curiouser":

If I implement PageDetachListener, everything works as expected -- even if my pageDetached() does nothing!

public abstract class MyPage
    extends BasePage
    implements PageDetachListener
    {
    // empty method is fix for bug in Tapestry 4.0b3
    public void pageDetached(PageEvent event) { }
    ...
    }

Wacky.


On Aug 8, 2005, at 12:17 PM, Paul Cantrell wrote:

I thought, what with the nifty annotations, that it should be possible to eliminate .page files entirely in most if not all cases, thus eliminating a major source of file clutter. Yay!

So I tried it, and found that my page properties were suddenly not getting restored to their pristine state. Boo! For example, I have this page with two transient properties...

public abstract class ArticleView
    extends BasePage
    implements PageAttachListener
    {
    public void pageAttached(PageEvent event)
        {
System.out.println("--------------------> title = " + getArticleTitle()); System.out.println("--------------------> body = " + getArticleBody());
        }

    public void init(Article article)
        {
        setArticleTitle(article.getCurrentVersion().getTitle());
        setArticleBody(article.getCurrentVersion().getBody());
        }

    public abstract String getArticleTitle();
    protected abstract void setArticleTitle(String title);

    public abstract String getArticleBody();
    protected abstract void setArticleBody(String bodyText);
    }

If I follow a @PageLink to ArticleView, I see title=null, body=null -- the correct pristine state. I then populate the page in a listener on another page that calls init(), and see the article displayed correctly.

But if I then go back to the original @PageLink, the previously displayed values, which should have been cleared to null, are still there hanging around -- even in pageAttached()! The page object is never returned to its pristine state.

If I create a .page file, then everything starts working as expected -- my transient properties are correctly cleared for each request:

    <page-specification class="net.innig.imre.web.ArticleView">
      <property name="articleTitle" />
      <property name="articleBody" />
    </page-specification>

But here's were it gets really weird. If I only specify *one* of the two properties, like this:

    <page-specification class="net.innig.imre.web.ArticleView">
      <property name="articleTitle" />
    </page-specification>

...then *both* properties get cleared. It looks like there's some "reset page" hook that doesn't get called unless there is a .page spec with at least one property in it.

This smells like a bug to me. Am I missing something here (see sig)? I really shouldn't need any .page at all, and the app should still behave correctly. At the very least, the presence of a spec for one property shouldn't change the behavior of all the others.

I am using 4.0 beta 3.

Cheers,

Paul

_________________________________________________________________

"After hearing ten thousand explanations, a fool is no wiser.
 But an intelligent person needs only two thousand five hundred."
                                                   -- Mahabharata


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




_________________________________________________________________

"Prediction is hard, especially of the future."  -- Niels Bohr


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to