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