Hi,

I assume your query model loads the records from a db? Then persist the new
Myrecord first (via a DAO and/or service layer) and then detach the model
explicitely to let it query a fresh state.

WebMarkupContainer myPanel = new WebMarkupContainer("myPanel");
myPanel.setOutputMarkupId(true);
form.add(myPanel);

final QueryModel model = (QueryModel)getDefaultModel();

final ListView lv = new ListView("rows", model) {
        @Override
        protected void populateItem(ListItem item) {
                // don't pull anything out of models just to place it into 
another model,
                // otherwise you're just increasing your session size
                item.add(new TextField<Integer>("value",
                        new PropertyModel<Integer>(item.getModel(), "value"),
                        Integer.class));
        }
}
myPanel.add(lv);

AjaxSubmitLink addLink = new AjaxSubmitLink("addRow") {
        @Override
        public void onSubmit(AjaxRequestTarget target, Form<?> form) {
                // let you service layer persist the new record 
                dao.persist(new Myrecord());
                // let the model query a fresh state
                model.detach();

                if (target != null)     {
                        target.addComponent(myPanel);
                        target.addComponent(addLink);
                }
        }
        public boolean isVisible() {
                // although disdained recently IMHO this is a perfect place to 
override
isVisible()
                // and be always up-to-date
                return super.isVisible() && model.getObject().size() < 10
        }
};
addLink.setDefaultFormProcessing(false);
form.add(addLink);

HTH

Sven
-- 
View this message in context: 
http://apache-wicket.1842946.n4.nabble.com/LoadableDetachableModel-tp3312829p3312947.html
Sent from the Users forum mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to