Pieter Degraeuwe wrote:
> 
> There are several ways how you can do this...
> 
> To encourage losely coupled components folowing is in my opinion the best
> solution..
> 
> Work with a callback mechanism. let's say you define a callback interface
> SaveCallback with a method onSaved(AjaxRequestTarget target).
> The component that uses you panel/form, can pass such a callback to define
> de 'code' that needs to be executedn once the Link is saved.
> 
> class MyPage {
> 
>    public MyPage() {
>      //construct panels....
>      final Panel otherPanel = new .....
>      otherPanel.setOutputMarkupId(true); //make it possible to refresh
> this
> panel via ajax
>      add(otherPanel);
> 
>      add(new NewLinkPanel("newLinkPanel",new SaveCallback() {
> 
>             onSaved(AjaxRequestTarget target) {
>                 target.addComponent(otherPanel);//refresh other panel
>             }
>       });
>    }
> }
> 

I did code like below, but i don't know how in onSubmit() method get
AjaxRequestTarget object.

// callback interface
public interface AddLinkCallback {
        public void onAdd(AjaxRequestTarget target);
}

// main page with panels
public class Base extends WebPage {
        public Base() {
                
                final ContentPanel contentPanel = new ContentPanel("content");
                contentPanel.setOutputMarkupId(true); // can be updated by ajax
                NewLinkPanel linkPanel = new NewLinkPanel("newlink", new
AddLinkCallback() {
                        @Override
                        public void onAdd(AjaxRequestTarget target) {
                                // TODO Auto-generated method stub
                          target.addComponent(contentPanel);//refresh other 
panel                               
                        }                       
                });     
        }
}

// control panel (add button)
public class NewLinkPanel extends Panel {
        public NewLinkPanel(String id, AddLinkCallback callback) {
                super(id);
                add(new LinkForm("linkform", callback));
        }
}
class LinkForm extends Form {
        private AddLinkCallback callback;
        public LinkForm(String id, AddLinkCallback callback) {
                super(id);
                this.callback = callback;
                
                Link link = new Link();
                this.setModel(new Model(link));
                add(new TextField("name", new PropertyModel(link, "name")));
                add(new TextField("address",new PropertyModel(link, 
"address")));
                add(new AjaxSubmitLink("ok"){
                        @Override
                        protected void onSubmit(AjaxRequestTarget target, Form 
form) {}                                         
                });
        }

        @Override
        protected void onSubmit() {
                System.out.println("ok");
                Link l = (Link)this.getModelObject();
                new LinkDAO().save(l);

                callback.onAdd(target ????); // ???????????????????????????
        }
}

-- 
View this message in context: 
http://old.nabble.com/Accessing-Page-components-tp26824375p26827804.html
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to