Hi, I'm just getting started with Tapestry5, and very impressed so far.

I have a zone on my page containing a grid component that takes about 20
seconds to calculate the contents of.  I don't want the loading of the page
to hang while this occurs, so I initially have the contents of the zone
hidden by an "if" component associated with a boolean property for the
visibility, and have the "get" method for the grid contents conditionally
returning null when the property is set to false.  To calculate the contents
and display the zone I have an actionlink that changes the boolean property
and returns the zone body.

The toggling works fine, but what I would like to do is display a message on
the page as soon as the actionlink is clicked saying that the load is in
progress (at the moment there is no visible change for 20s), and then this
message should go away when the zone appears.  Is there a way to do this?
 Also, I would appreciate any insights into whether there is a better way to
do this...

>From the tml:

    <t:actionlink t:id="toggleDomains"
zone="domainsZone">Domains</t:actionlink>

    <t:zone t:id="domainsZone">

        <t:if test="domainsVisible">

            <t:grid source="domains" rowsPerPage="15"/>

        </t:if>

    </t:zone>


>From the page class:


     @Persist

    @Property

    private boolean domainsVisible;



    @InjectComponent

    private Zone domainsZone;



    Zone onActionFromToggleDomains() {

        domainsVisible = domainsVisible ? false : true;

        return domainsZone;

    }



    public List<Domain> getDomains() {

        if(domainsVisible) {

            return retrieveDomainList();

        }

        else {

            return null;

        }

    }


Thanks for all the interesting discussion and tips.


David

Reply via email to