s/getDefaultModelObjectAsString/getModelObjectAsString/...

On Wed, Nov 25, 2009 at 5:29 PM, Xavier López <xavil...@gmail.com> wrote:
> Thanks anyway Pedro, it's a good insight, and pretty original ;-) Didn't
> think of it, nor knew about visitors...
>
> Sadly, I'm on Wicket 1.3.5 and it wouldn't be working anyway, as
> MarkupContainer does not seem to provide '
> getDefaultModelObjectAsString', apart from what you said about
> MessageContainer...
>
> Just out of curiosity, wouldn't it be possible to do that traversal upwards
> (from formComponent to Form) ?
> And I suppose the <wicket:message> tags get converted somehow to these
> MessageContainers (which are tried to localize in the visitor by means of
> "_message_" in its id)
>
> Thanks,
> Xavier
>
>
> 2009/11/25 Pedro Santos <pedros...@gmail.com>
>
>> ops, I just see: if you have an form with more than one form componente,
>> that behavior will not work. So, it was just an idea :)
>>
>> On Wed, Nov 25, 2009 at 2:13 PM, Pedro Santos <pedros...@gmail.com> wrote:
>>
>> > Possible alternative that will work on current wicket version, since
>> > MessageContainer is an private inner class
>> >
>> > public class AdjustLabel extends AbstractBehavior
>> >     {
>> >         @Override
>> >         public void beforeRender(Component component)
>> >         {
>> >             if (component instanceof FormComponent)
>> >             {
>> >                 final FormComponent formComponent =
>> > (FormComponent)component;
>> >
>> component.getParent().visitChildren(MarkupContainer.class,
>> >                         new IVisitor<MarkupContainer>()
>> >                         {
>> >
>> >                             public Object component(MarkupContainer
>> > component)
>> >                             {
>> >                                 if
>> > (component.getId().startsWith("_message_"))
>> >                                 {
>> >                                     formComponent.setLabel(new
>> > ResourceModel(component
>> >
>> > .getDefaultModelObjectAsString()));
>> >                                     return IVisitor.STOP_TRAVERSAL;
>> >                                 }
>> >                                 else
>> >                                 {
>> >                                     return null;
>> >                                 }
>> >                             }
>> >                         });
>> >             }
>> >         }
>> >     }
>> >
>> > then you set:
>> >
>> > input.add(new AdjustLabel());
>> >
>> >
>> > On Wed, Nov 25, 2009 at 1:51 PM, Xavier López <xavil...@gmail.com>
>> wrote:
>> >
>> >> I forgot,
>> >>
>> >> A possible solution would be using a shared StringResourceModel for both
>> >> the
>> >> setLabel() method and providing the <label> tag like this:
>> >>
>> >> <label wicket:id="labelX"><span wicket:id="labelXText"></span></label>
>> >>
>> >> StringResourceModel m = new StringResourceModel("form.x.label", this,
>> >> null);
>> >> x.setLabel(m);
>> >> FormComponentLabel labelX = new FormComponentLabel("labelX", x);
>> >> form.add(labelX);
>> >> Label labelXText = new Label("labelXText", m);
>> >>
>> >> But I'm looking for a less intrusive solution on pages already
>> >> developed...
>> >>
>> >> Thanks,
>> >> Xavier
>> >>
>> >> ---------- Forwarded message ----------
>> >> From: Xavier López <xavil...@gmail.com>
>> >> Date: 2009/11/25
>> >> Subject: Component.setLabel and <label> tags
>> >> To: users@wicket.apache.org
>> >>
>> >>
>> >> Hi,
>> >>
>> >> In a form, I have multiple fields each one with its corresponding
>> >> FormComponentLabel, with proper <wicket:message> content in the markup
>> >> file.
>> >> Now, I'm facing the fact that I need to provide the same keys I provided
>> >> in
>> >> <wicket:message> in a StringResourceModel in component's setLabel()
>> >> method.
>> >>
>> >> Although I'm aware it's not straightforward (setLabel requires a Model,
>> >> and
>> >> <label>'s body is just body markup), it would be great if there was some
>> >> way
>> >> to avoid this duplication telling Wicket to use the same key provided in
>> >> the
>> >> FormComponentLabel's body...
>> >>
>> >> Does anyone have a hint ?
>> >>
>> >> Thanks,
>> >> Xavier
>> >>
>> >>
>> >>
>> >>
>> >> --
>> >> "Klein bottle for rent--inquire within."
>> >>
>> >
>> >
>> >
>> > --
>> > Pedro Henrique Oliveira dos Santos
>> >
>>
>>
>>
>> --
>> Pedro Henrique Oliveira dos Santos
>>
>
>
>
> --
> "Klein bottle for rent--inquire within."
>



-- 
Become a Wicket expert, learn from the best: http://wicketinaction.com
Apache Wicket 1.4 increases type safety for web applications
Get it now: http://www.apache.org/dyn/closer.cgi/wicket/1.4.0

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to