Hi Steve,
First off I'd like to thank you, you helped me get really close to the
issue, however the panel doesn't seem to be replaced. A new panel is
created above the old one :\ Here is what I came up with
final Panel image = new AjaxLazyLoadPanel("image") {
/**
* Makes object serializable.
*/
private static final long serialVersionUID = 1L;
@Override
public Component getLazyLoadComponent(String id) {
return (new ChartPanel(id));
}
};
add(image);
AjaxFormValidatingBehavior.addToAllFormComponents(form,
"onchange", Duration.ONE_SECOND);
form.add(new AjaxButton("ajax-button", form) {
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
// repaint the feedback panel so that it is hidden
target.addComponent(feedback);
System.out.println("Ajax Submitted!");
Component newImagePanel = new AjaxLazyLoadPanel("image") {
private static final long serialVersionUID = 1L;
@Override
public Component getLazyLoadComponent(String id) {
return (new ChartPanel(id));
}
};
newImagePanel.setOutputMarkupId(true);
image.replaceWith(newImagePanel);
target.addComponent(newImagePanel);
}
On Sun, Dec 6, 2009 at 12:54 PM, Steve Swinsburg
<[email protected]> wrote:
> Hi,
>
> Yes you can do the processing for the form in the onSubmit of the ajax submit
> button, then just replace the current panel with the new one.
>
> - outside your onSubmit hold a reference to your current panel:
> final Component thisPanel = this;
>
> - inside your onSubmit after processing the data:
>
> Component newPanel = new SomeOtherPanel(id, someParam);
> newPanel.setOutputMarkupId(true);
> thisPanel.replaceWith(newPanel);
> target.addComponent(newPanel);
>
> Thats what I do.
>
> cheers,
> Steve
>
> On 06/12/2009, at 2:27 PM, bassglider wrote:
>
>> Ok, I think I'm getting somewhere after a few hours, I have two
>> textfields, when the user hits the ajax submit button, the panel
>> should be replaced with a new panel. I'm thinking that
>> onSubmit(AjaxRequestTarget target, Form<?> form)
>> should be able to take the input of the textfields and call the method
>> to update the image panel with a new image panel based on the new
>> values in the textfields.
>>
>> Any ideas?
>>
>>
>>
>> Form<String> form = new Form<String>("Chart");
>>
>> TextField<Date> dateBegin =
>> new TextField<Date>("beginningDate", new
>> PropertyModel<Date>(session, "beginningDate"));
>> dateBegin.add(new DatePicker());
>> dateBegin.setRequired(true);
>> form.add(dateBegin);
>>
>> TextField<Date> endingDate =
>> new TextField<Date>("endingDate", new
>> PropertyModel<Date>(session, "endingDate"));
>> endingDate.add(new DatePicker());
>> endingDate.setRequired(true);
>> form.add(endingDate);
>>
>> CreateChart(this);
>> AjaxFormValidatingBehavior.addToAllFormComponents(form,
>> "onchange", Duration.ONE_SECOND);
>>
>> form.add(new AjaxButton("ajax-button", form) {
>>
>> private static final long serialVersionUID = 1L;
>>
>> �...@override
>> protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
>> // repaint the feedback panel so that it is hidden
>> target.addComponent(feedback);
>> System.out.println("Ajax Submitted!" + feedback.toString());
>>
>> }
>>
>> ....
>>
>>
>> private Panel CreateChart(Panel pan) {
>> pan.add(new AjaxLazyLoadPanel("image") {
>> /**
>> * Makes object serializable.
>> */
>> private static final long serialVersionUID = 1L;
>>
>> �...@override
>> public Component getLazyLoadComponent(String id) {
>> return (new ChartPanel(id));
>> }
>> });
>> return pan;
>> }
>>
>>
>>
>> On Sat, Dec 5, 2009 at 2:51 PM, bassglider <[email protected]> wrote:
>>> Hi Everyone,
>>>
>>> I was wondering if someone could point to the right direction
>>> (examples, classes) for the following scenario:
>>>
>>> I have a few text fields inside a panel, when one of the text fields
>>> is changed, I'd like to call a method with updates a panel within the
>>> current panel.
>>>
>>> Currently I have the two text fields in the panel with the other panel
>>> that displays the image, I just need to figure out how to call that
>>> method when these forms are changed and I'm sure I can figure out the
>>> rest from there.
>>>
>>> Any direction is helpful
>>>
>>
>> ---------------------------------------------------------------------
>> 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]