If you are going to have to add extra containers anyway, you could try it the way we do it on my project.
In the html, we add both a label and input element with wicket ids. to keep it simple, the label's id is the same as the related component's id with "label" appended to it. Then, we have a createLabel method that takes the Component and it automatically adds the label with the proper id. TextField message = new TextField("message"); message.setLabel(new Model("Message")); add(message); createFieldLabel(this, message); protected FormComponentLabel createFieldLabel(final MarkupContainer container, final FormComponent formComponent) { FormComponentLabel label = new FieldLabel(formComponent.getId() + "Label", formComponent); container.add(label); return label; } Chuck igor.vaynberg wrote: > > put a container around your component and update that via ajax instead > > -igor > > > On 10/4/07, Clay Lehman <[EMAIL PROTECTED]> wrote: >> I implemented a simple IComponentBorder, and anything I put in the >> beforeRender gets added again every time I try to update the component >> with AJAX. >> >> My IcomponentBorder has: >> public void renderBefore(Component component) >> { >> Response resp = component.getResponse(); >> resp.write("Label"); >> } >> >> To update the input box using AJAX I have a behavior: >> >> Input1.add(new AjaxFormComponentUpdatingBehavior("onchange") >> { >> protected void onUpdate(AjaxRequestTarget target) >> { >> theItem.name="new value"; >> target.addComponent(input2) >> } >> }); >> >> When I do target.addComponent(input2), the renderBefore adds "Label" >> again, so the HTML looks like: >> >> Label Label <input wicket:id="input2"/> >> >> Am I using IComponentBorder wrong? >> >> Thanks for any help! >> -Clay >> >> >> -----Original Message----- >> From: Igor Vaynberg [mailto:[EMAIL PROTECTED] >> Sent: Thursday, October 04, 2007 11:13 AM >> To: users@wicket.apache.org >> Subject: Re: Adding a label when I add a FormComponent. >> >> see icomponentborder >> >> -igor >> >> >> On 10/4/07, Clay Lehman <[EMAIL PROTECTED]> wrote: >> > >> > Hey Everyone, >> > >> > >> > >> > I want to create a subclass of a Form Component (Let's use TextField >> for >> > this example) which takes a String in the constructor, and >> automatically >> > adds the HTML for a Label before the field. I want to provide all the >> > default functionality of a TextField (like adding behaviors, and >> > validators), so I don't think a Panel will work for me. >> > >> > >> > >> > >> > >> > I found a post where it mentioned (as a hack)to override onRender to >> add >> > HTML for the label directly, but this runs into problems when you >> > include the Component in an AJAX page (whenever you re-add the >> > component, it calls onRender, and you add the HTML for the label >> > multiple times. >> > >> > >> > >> > Is there a way to do this using SimpleFormComponentLabel, or some >> other >> > construct? >> > >> > >> > >> > Could I use FormComponentPanel? Or is there some configuration and >> > functionality in AbstractTextCompnent and TextField which I would lose >> > by using a FormComponentPanel? >> > >> > >> > >> > Thanks for any advice!! >> > >> > -Clay Lehman >> > >> > >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > -- View this message in context: http://www.nabble.com/Adding-a-label-when-I-add-a-FormComponent.-tf4569428.html#a13047069 Sent from the Wicket - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]