Hello,
I have followed this example. Thank you a lot, it is actually helped me.
However even though I got refreshed component, the previous state of the
component is still displayed. I have to refresh the page to remove it.
Any helping hint would be appreciated.
regards
Lenka
Timo Rantalaiho wrote:
>
> On Mon, 09 Jun 2008, freak182 wrote:
>> Im having problem of updating parents components.Hereis my problem, there
>> is
>> page and in that page there is a panel. The panel contain a
>> FormUpdatingComponent that attached to a dropdownchoice. Now when the
>> dropdown is triggered, i want to update the parents (the page)
>> textbox/label..is this possible?
>
> Hmm, what is FormUpdatingComponent?-) A typo perhaps?
>
> Sure it is possible, e.g. something like
>
> public class FooPage extends WebPage {
> public FooPage() {
> Panel fooPanel = new FooPanel("fooPanel", ...
> ....
> Foo initialSelection = ...
> IModel fooModel = new Model(initialSelection);
> final Label display = new Label("foo", fooModel);
> display.setOutputMarkupId(true);
> add(display);
> DropDownChoice selection = new DropDownChoice("fooSelection",
> fooModel, choices);
> selection.add(new AjaxFormComponentUpdatingBehavior("onchange) {
> public void onEvent(AjaxRequestTarget target) {
> target.addComponent(display);
> }
> });
> fooPanel.add(selection);
> ...
> }
> }
>
> But if your Panel is "further away" from the other
> components directly on the page, this might get trickier.
> For normal requests you can often get away with sharing the
> model, but if passing it all the way to the "sending"
> component gets nasty, or if you want to repaint something in
> the parent via Ajax, something like this might be easier
>
> public interface FooChoiceListener {
> void onSelection(IModel foo, AjaxRequestTarget target);
> }
>
> public class MyLabel extends Label implements FooChoiceListener {
> ...
> public void onSelection(IModel foo, AjaxRequestTarget target) {
> setModelObject(foo.getObject());
> target.addComponent(this);
> }
> }
>
>
> public class FooPage extends WebPage {
> public FooPage() {
> Label display = new MyLabel(...);
> add(new FooPanel());
> ...
> }
> }
>
> public class FooPanel extends Panel {
> public FooPanel(String id, IModel foo) {
> ...
> DropDownChoice selection = new DropDownChoice("fooSelection",
> fooModel, choices);
> selection.add(new AjaxFormComponentUpdatingBehavior("onchange) {
> public void onEvent(AjaxRequestTarget target) {
> getPage().visitChildren(FooChoiceListener.class,
> new IVisitor() {
> public Object component(Component c) {
> ((FooChoiceListener) c).onSelection(fooModel, target);
> return CONTINUE_TRAVERSAL;
> }
> });
> }
> });
> }
> }
>
> A "generic eventbroadcaster" can be found here
>
> http://issues.apache.org/jira/browse/WICKET-1312
>
> Best wishes,
> Timo
>
> --
> Timo Rantalaiho
> Reaktor Innovations Oy <URL: http://www.ri.fi/ >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
-----
Kind regards
Lenka
--
View this message in context:
http://www.nabble.com/How-to-update-parent-component-from-a-panel--tp17748294p20502103.html
Sent from the Wicket - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]