[ 
https://issues.apache.org/jira/browse/WICKET-4007?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13095667#comment-13095667
 ] 

Bruno Borges commented on WICKET-4007:
--------------------------------------

What is the difference between this feature and wicket:message?

With wicket:message you can reference a (static) String (from a resource 
bundle) in several places within the same markup. If one wants to add such a 
String, he/she does not need to modify the Java side, just the HTML.

The Wicket way is been kept here. wicket:var injects a Label component per 
reference for a variable. So models would be converted properly with registered 
Converters. If one wants to use a different converter, so better use the 
current "Wicket way" or register a custom data type and converter.

This feature seems to be stupid, but I starting to get tired of writing codes 
like this:

add(new Label("address1", addressPropertyModel));
add(new Label("address2", addressPropertyModel));
add(new Label("address3", addressPropertyModel));
add(new Label("address4", addressPropertyModel));

Or: 

add(addressLabel(1));
add(addressLabel(1));
add(addressLabel(1));
add(addressLabel(1));

Label addressLabel(int i) { return new Label("address" + i, 
addressPropertyModel); }

Or 

addAddressLabel(1);
addAddressLabel(2);
addAddressLabel(3);
addAddressLabel(4);

void addAddressLabel(int i) { add(new Label("address" + i, 
addressPropertyModel)); }

Or

for(int i = 1; i <= 4; i++) addAddressLabel(i);

And everytime I must display that information somewhere else in the same page, 
I must edit the Java code.

Really, this feature is not something like EL ${JSF}. It's similar, but 
differente because inside of this tag implementation, the "Wicket way" is being 
respected. A label is being created for each reference of that variable.

wicket:var IS a component. It's a hint for a Label component referencing a 
model. Just like wicket:message is a Container component. In fact, this feature 
is basically WicketMessage. I didn't have to make lots of changes.

If wicket:var is considered to be against the Wicket way, so wicket:message 
should be considered as well.

> 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

        

Reply via email to