tapestry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andreas Andreou (JIRA)" <...@tapestry.apache.org>
Subject [jira] Commented: (TAPESTRY-2244) Add @Cached annotation for caching method values
Date Sat, 08 Mar 2008 22:09:46 GMT

    [ https://issues.apache.org/jira/browse/TAPESTRY-2244?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12576628#action_12576628

Andreas Andreou commented on TAPESTRY-2244:

I did Cached for T4.1 @ tacos... The only undocumented feature it has is that
upon rewinding, if a value is cached, it'll also be cached during the forthcoming rendering
(assuming no redirect-after-post)

I don't know if this also happens in T5, but if it does, it's worth an explanation. For tacos,
considering adding a flag like @Cached(clearOnRender=true)   if you have a better name, please

> Add @Cached annotation for caching method values
> ------------------------------------------------
>                 Key: TAPESTRY-2244
>                 URL: https://issues.apache.org/jira/browse/TAPESTRY-2244
>             Project: Tapestry
>          Issue Type: New Feature
>          Components: tapestry-core
>    Affects Versions: 5.0.11
>            Reporter: Dan Adams
>            Assignee: Dan Adams
>             Fix For: 5.0.11
> The @Once annotation can be used on methods to cache the value or cache the value based
on some other value changing (great for loops). We've been using it in our internal CMS library
and it's immensly useful, especially when getting things out of any kind of database or doing
queries. Here's a typical usage:
> class:
> @Once
> public List<Entities> getEntities() {
>   // get and return the objects from the database or something
> }
> in the template:
> <t:if test="!entities.empty">
>   do something
> </t:if>
> <t:loop source="entities">
>   loop through and do something
> </t:loop>
> In this example, getEntities gets cached on the if test and then the value is cached
so it doesn't get called again on the loop. You can also use it this way:
> @Property
> private Entity loopValue;
> @Once(watch="loopValue")
> public Object getSomeDependentValue() {
>   // do some expensive operation based on loopValue
> }
> which will only execute the method each time loopValue changes.

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: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org

View raw message