You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Clay Lehman <cl...@medfusion.net> on 2007/10/04 17:06:55 UTC
Adding a label when I add a FormComponent.
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
Re: Adding a label when I add a FormComponent.
Posted by ChuckDeal <cd...@csc.com>.
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 <cl...@medfusion.net> 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:igor.vaynberg@gmail.com]
>> 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 <cl...@medfusion.net> 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: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>
>
--
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: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
Re: Adding a label when I add a FormComponent.
Posted by Eelco Hillenius <ee...@gmail.com>.
WebRequest.isAjax()
Eelco
On 10/4/07, Clay Lehman <cl...@medfusion.net> wrote:
> Is there a way to tell if a request is coming via AJAX instead of a
> normal request? If there is a way to do this, I could disable my
> ComponentBorder on secondary AJAX requests, and only use it on the
> original request...
>
> Thanks,
> -Clay
>
>
> -----Original Message-----
> From: Igor Vaynberg [mailto:igor.vaynberg@gmail.com]
> Sent: Thursday, October 04, 2007 2:09 PM
> To: users@wicket.apache.org
> Subject: Re: Adding a label when I add a FormComponent.
>
> put a container around your component and update that via ajax instead
>
> -igor
>
>
> On 10/4/07, Clay Lehman <cl...@medfusion.net> 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:igor.vaynberg@gmail.com]
> > 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 <cl...@medfusion.net> 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: users-unsubscribe@wicket.apache.org
> > For additional commands, e-mail: users-help@wicket.apache.org
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
RE: Adding a label when I add a FormComponent.
Posted by Clay Lehman <cl...@medfusion.net>.
Is there a way to tell if a request is coming via AJAX instead of a
normal request? If there is a way to do this, I could disable my
ComponentBorder on secondary AJAX requests, and only use it on the
original request...
Thanks,
-Clay
-----Original Message-----
From: Igor Vaynberg [mailto:igor.vaynberg@gmail.com]
Sent: Thursday, October 04, 2007 2:09 PM
To: users@wicket.apache.org
Subject: Re: Adding a label when I add a FormComponent.
put a container around your component and update that via ajax instead
-igor
On 10/4/07, Clay Lehman <cl...@medfusion.net> 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:igor.vaynberg@gmail.com]
> 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 <cl...@medfusion.net> 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: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
Re: Adding a label when I add a FormComponent.
Posted by Igor Vaynberg <ig...@gmail.com>.
put a container around your component and update that via ajax instead
-igor
On 10/4/07, Clay Lehman <cl...@medfusion.net> 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:igor.vaynberg@gmail.com]
> 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 <cl...@medfusion.net> 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: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
RE: Adding a label when I add a FormComponent.
Posted by Clay Lehman <cl...@medfusion.net>.
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:igor.vaynberg@gmail.com]
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 <cl...@medfusion.net> 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: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
Re: Adding a label when I add a FormComponent.
Posted by Igor Vaynberg <ig...@gmail.com>.
see icomponentborder
-igor
On 10/4/07, Clay Lehman <cl...@medfusion.net> 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
>
>