You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Jeremy Thomerson (JIRA)" <ji...@apache.org> on 2011/09/02 00:52:10 UTC

[jira] [Closed] (WICKET-4007) New tag wicket:var

     [ https://issues.apache.org/jira/browse/WICKET-4007?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jeremy Thomerson closed WICKET-4007.
------------------------------------

    Resolution: Won't Fix

I agree with the commenters here.  This isn't the "Wicket way".  It may seem good at the surface.  But it's overly simplistic.  It only works with strings.  What if you want to show a currency amount (think shopping cart total) several places on the page?  Well, putVariable("cartTotal", someTotal).  Oh, but now you need a way to convert that to a proper currency string, not just a normal double.  So, now we need to shoehorn in a way to convert values.  Next, you need to not show it if there's nothing in the cart.  Well, let's shoehorn that in.

Wicket works with components.  This isn't a component.

All that being said, it's SUPER easy for you to add this functionality to your own base page.  You just need a component resolver to resolve your wicket:var tag.  Then, in your base page you can store a map of variables, add a putVariable method and your resolved auto-added components can getPage().getMyMagicMap().get(myNameAttrValue);  *That's* the beauty of Wicket.  You could add this feature yourself in fifteen minutes.

> New tag wicket:var
> ------------------
>
>                 Key: WICKET-4007
>                 URL: https://issues.apache.org/jira/browse/WICKET-4007
>             Project: Wicket
>          Issue Type: New Feature
>          Components: wicket
>            Reporter: Bruno Borges
>              Labels: tag,, variable, wicket,
>         Attachments: wicket-var-feature.diff
>
>
> This will facilitate users to reference models in several places of the markup.
> One can do: 
> class Page extends WebPage {
>   public Page() {
>     putVariable("username", "Peter Johnson");
>   }
> }
> <html>
> <body>
>   <div class="header">
>     <wicket:var name="name" />
>   </div>
>   <div class="container">
>     <wicket:var name="name" />
>   </div>
>   <div class="footer">
>     <wicket:var name="name" />
>   </div>
> </body>
> </html>
> It will be possible too to do such a thing:
>   Java:  putVariable("css", "blue-header");
>   HTML:   <div wicket:var="class:css">
> And render: <div class="blue-header">
> These variables can be rendered multiple times and my also be accessed from child objects (but not the opposite), like:
>   add(new WebMarkupContainer("header"));
> <div wicket:id="header">
>   <span wicket:var="class:css">Header</span>
> </div>

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira