Hi Martin,

Sure. Currently I'm using <wicket:message> like described in the JavaDoc of
WicketMessageResolver:

Template:

>   <wicket:message key="myKey">
>         <span wicket:id="amount">[amount]</span>.
>         <a wicket:id="link">
>             <wicket:message key="linkText"/>
>         </a>
>    </wicket:message>


Java:

> add(new Label("amount", new Model<String>("$5.00")));
> add(new BookmarkablePageLink<Void>("link", DetailsPage.class));


i18n:

> myKey=Your balance is ${amount}. Click ${link} to view the details.
> linkText=here


This works, but the key "myKey" cannot be changed during runtime. I'd like
to use the private MessageContainer the same way I can use an
EnclosureContainer:

Template:

>   <wicket:container wicket:id="msg">
>         <span wicket:id="amount">[amount]</span>.
>         <a wicket:id="link">
>             <wicket:message key="linkText"/>
>         </a>
>    </wicket:container>


Java:

> final String key = "myKey";

final MessageContainer msg = new MessageContainer("msg", key, true);

msg.add(new Label("amount", new Model<String>("$5.00")));
> msg.add(new BookmarkablePageLink<Void>("link", DetailsPage.class));

add(msg);


I hope that explains my requirement a bit better.

Best,

 Thomas


On Thu, Jul 25, 2019 at 6:48 AM Martin Terra <
martin.te...@koodaripalvelut.com> wrote:

> Hi!
>
> Can you show an example of solution now vs. solution after change, what are
> the benefits of such visibility change to your case? Maybe there is another
> way to accomplish your goal?
>
> **
> Martin
>
> ke 24. heinäk. 2019 klo 22.25 Thomas Heigl (tho...@umschalt.com)
> kirjoitti:
>
> > Hi all,
> >
> > I'd like to create Wicket messages with child components programatically.
> > Currently, this is only possible by using the <wicket:message> tag and
> > nesting components inside of it.
> >
> > For most use cases this is sufficient, but I sometimes come across cases
> > where I'd like to programatically define the message key instead of
> > hard-coding it in the template.
> >
> > The class that does all the interpolation is currently
> > private:
> > org.apache.wicket.markup.resolver.WicketMessageResolver.MessageContainer
> >
> > Would it be possible to make this a public (top-level) class in Wicket 9?
> > If I understand correctly, this would solve my requirement without any
> > other code changes.
> >
> > Best regards,
> >
> > Thomas
> >
>

Reply via email to