got point igor.. The first thing I did with the project was copying over the
start.java..Having break points etc just gives it a better sense..

Shelli heres the start.java:



import org.mortbay.jetty.Connector;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.bio.SocketConnector;
import org.mortbay.jetty.webapp.WebAppContext;

public class Start {

    public static void main(String[] args) throws Exception {
        Server server = new Server();
        SocketConnector connector = new SocketConnector();
        // Set some timeout options to make debugging easier.
        connector.setMaxIdleTime(1000 * 60 * 60);
        connector.setSoLingerTime(-1);
        connector.setPort(8081);
        server.setConnectors(new Connector[] { connector });

        WebAppContext bb = new WebAppContext();
        bb.setServer(server);
        bb.setContextPath("/");
        bb.setWar("src/main/webapp");


        // START JMX SERVER
        // MBeanServer mBeanServer =
ManagementFactory.getPlatformMBeanServer();
        // MBeanContainer mBeanContainer = new MBeanContainer(mBeanServer);
        // server.getContainer().addEventListener(mBeanContainer);
        // mBeanContainer.start();

        server.addHandler(bb);

        try {
            System.out.println(">>> STARTING EMBEDDED JETTY SERVER, PRESS
ANY KEY TO STOP");
            server.start();
            while (System.in.available() == 0) {
                Thread.sleep(5000);
            }
            server.stop();
            server.join();
        } catch (Exception e) {
            e.printStackTrace();
            System.exit(100);
        }
    }
}


Good night
- Nino

2010/10/12 Igor Vaynberg <igor.vaynb...@gmail.com>

> you should first try and understand how models work. there is this
> page to help you:
>
> https://cwiki.apache.org/WICKET/working-with-wicket-models.html
>
> but nothing will be better then setting some breakpoints and seeing
> how things actually work.
>
> -igor
>
> On Tue, Oct 12, 2010 at 2:24 PM, Shelli Orton <shelli.or...@sjrb.ca>
> wrote:
> > I only explicitly set the selectedRecordA in two places, during the
> > cancel and add onSubmit methods (I removed the initialization in the
> > declaration in my code).  As you alluded to earlier, add is done via
> >
> >    setSelectedRecordA(new RecordA());
> >
> > and cancel is done via:
> >
> >    RecordAPanel.this.selectedRecordA = null;
> >
> > I changed cancel to be:
> >
> >    setSelectedRecordA(new RecordA());
> >
> > but it doesn't seem to make a difference, still get the issue when
> > cancelling.
> >
> > Should I be setting the selectedRecordA to null on cancel?  It makes
> > sense to me and it's what I've done in other applications/frameworks,
> > but perhaps it's not correct in Wicket...
> >
> > Shelli
> >
> > -----Original Message-----
> > From: nino martinez wael [mailto:nino.martinez.w...@gmail.com]
> > Sent: Tuesday, October 12, 2010 3:00 PM
> > To: users@wicket.apache.org
> > Subject: Re: PropertyModel Not Refreshing
> >
> > Think I was going in the wrong direction.. Looking at the error, seems
> > to
> > get triggered by pressing the cancel button only..
> >
> > 2010/10/12 Shelli Orton <shelli.or...@sjrb.ca>
> >
> >> This is where my confusion about models may be kicking in.  I thought
> >> that property models (PropertModel or CompoundPropertyModel)
> >> automatically checked if the model object changed.  How do I tell the
> >> model it has?
> >>
> >> Shelli
> >>
> >> -----Original Message-----
> >> From: nino martinez wael [mailto:nino.martinez.w...@gmail.com]
> >> Sent: Tuesday, October 12, 2010 12:10 PM
> >> To: users@wicket.apache.org
> >> Subject: Re: PropertyModel Not Refreshing
> >>
> >> in your add button you call setSelectedRecordA(new RecordA()) but
> > never
> >> notify the model that a change has occured...
> >>
> >> 2010/10/12 nino martinez wael <nino.martinez.w...@gmail.com>
> >>
> >> > hmm getting a lot of errors on the services not implementing
> >> > serialization...
> >> >
> >> > But does seem theres a difference between calling :
> >> >
> >> > selectedRecordAModel.getObject().getName() and
> >> > RecordAPanel.this.selectedRecordA
> >> >
> >> > 2010/10/12 nino martinez wael <nino.martinez.w...@gmail.com>
> >> >
> >> > sorry.. Did'nt see it attached.. So did igor provide you with an
> > fixed
> >> >> quickstart (working on his system).. That did not work on
> > glassfish?
> >> >>
> >> >>
> >> >> 2010/10/12 Shelli Orton <shelli.or...@sjrb.ca>
> >> >>
> >> >>> The quickstart was sent to the list this morning at 10:04 MST.
> > Does
> >> it
> >> >>> need to be resent?
> >> >>>
> >> >>> Shelli
> >> >>>
> >> >>> -----Original Message-----
> >> >>> From: nino martinez wael [mailto:nino.martinez.w...@gmail.com]
> >> >>> Sent: Tuesday, October 12, 2010 11:52 AM
> >> >>> To: users@wicket.apache.org
> >> >>> Subject: Re: PropertyModel Not Refreshing
> >> >>>
> >> >>> No dont think so.. Please provide a quickstart.. I have had
> > property
> >> >>> models
> >> >>> working in 1.2, 1.3, 1.4 and 1.5 so must be error 42:)
> >> >>>
> >> >>> 2010/10/12 Shelli Orton <shelli.or...@sjrb.ca>
> >> >>>
> >> >>> > Hi,
> >> >>> >
> >> >>> > Thanks for file.  Your first email was missing these changes:
> >> >>> >
> >> >>> >    IModel<RecordA> selectedRecordAModel;  (I had set mine to
> >> >>> > PropertyModel<RecordA> selectedRecordAModel;)
> >> >>> >    recordAs.setModel(selectedRecordAModel)
> >> >>> >
> >> >>> > However, even with those changes applied, I still get the same
> >> issue
> >> >>> of the
> >> >>> > selected record not updating in the edit group.
> >> >>> >
> >> >>> > I am deploying in Glassfish v3.  Could that have anything to do
> >> with
> >> >>> my
> >> >>> > problems?
> >> >>> >
> >> >>> > Shelli
> >> >>> >
> >> >>> > -----Original Message-----
> >> >>> > From: Igor Vaynberg [mailto:igor.vaynb...@gmail.com]
> >> >>> > Sent: Tuesday, October 12, 2010 11:35 AM
> >> >>> > To: users@wicket.apache.org
> >> >>> > Subject: Re: PropertyModel Not Refreshing
> >> >>> >
> >> >>> > On Tue, Oct 12, 2010 at 10:30 AM, Shelli Orton
> >> <shelli.or...@sjrb.ca>
> >> >>> > wrote:
> >> >>> > > Thanks for the help.  Your changes got rid of the errors and I
> >> can
> >> >>> delete
> >> >>> > records now (and the list is updated).
> >> >>> > >
> >> >>> > > However, once a record has been selected for edit and either
> >> saved
> >> >>> or
> >> >>> > cancelled, that same record is always displayed in the edit
> > group
> >> when
> >> >>> I
> >> >>> > choose another record to edit or even when I try to create a new
> >> one.
> >> >>> I can
> >> >>> > even delete the chosen record and it still displays in the edit
> >> group.
> >> >>> >
> >> >>> > works fine here, meaning you did not completely/propery apply my
> >> >>> > changes. below is the complete file.
> >> >>> >
> >> >>> > -igor
> >> >>> >
> >> >>> > public class RecordAPanel extends Panel
> >> >>> > {
> >> >>> >    private static final long serialVersionUID = 1L;
> >> >>> >
> >> >>> >    RecordAService recordAService;
> >> >>> >    RecordBService recordBService;
> >> >>> >
> >> >>> >    RecordA selectedRecordA = new RecordA();
> >> >>> >    IModel<RecordA> selectedRecordAModel;
> >> >>> >    String unmodifiedRecordA;
> >> >>> >
> >> >>> >    boolean isNew = false;
> >> >>> >
> >> >>> >    WebMarkupContainer selectGroup;
> >> >>> >    WebMarkupContainer editGroup;
> >> >>> >
> >> >>> >    Form selectForm;
> >> >>> >    Form editForm;
> >> >>> >
> >> >>> >    DropDownChoice<RecordA> recordAs;
> >> >>> >    DropDownChoice<RecordB> recordBs;
> >> >>> >
> >> >>> >    Button add;
> >> >>> >    Button edit;
> >> >>> >    Button save;
> >> >>> >    Button delete;
> >> >>> >    Button cancel;
> >> >>> >
> >> >>> >    Label editLegendLabel;
> >> >>> >    String editLegend;
> >> >>> >    Label recordALabel;
> >> >>> >    Label recordBLabel;
> >> >>> >
> >> >>> >    RequiredTextField recordAText;
> >> >>> >
> >> >>> >    @SuppressWarnings({ "rawtypes", "unchecked" })
> >> >>> >    public RecordAPanel(String id)
> >> >>> >    {
> >> >>> >        super(id);
> >> >>> >
> >> >>> >        recordAService = ((Application)
> >> >>> > RequestCycle.get().getApplication()).getRecordAService();
> >> >>> >        recordBService = ((Application)
> >> >>> > RequestCycle.get().getApplication()).getRecordBService();
> >> >>> >
> >> >>> >        selectedRecordAModel = new PropertyModel<RecordA>(this,
> >> >>> > "selectedRecordA");
> >> >>> >        this.setDefaultModel(selectedRecordAModel);
> >> >>> >
> >> >>> >        // ************* Select  Group *************
> >> >>> >
> >> >>> >        selectGroup = new WebMarkupContainer("selectGroup");
> >> >>> >        selectForm = new Form("selectForm");
> >> >>> >
> >> >>> >        recordAs = new DropDownChoice<RecordA>("recordAs");
> >> >>> >        recordAs.setModel(selectedRecordAModel);
> >> >>> >        recordAs.setChoices(recordAsModel);
> >> >>> >        recordAs.setChoiceRenderer(new RecordARenderer());
> >> >>> >
> >> >>> >        //            recordAs = (DropDownChoice<RecordA>) new
> >> >>> > DropDownChoice<RecordA>("recordAs",
> >> >>> >        //                    new PropertyModel<RecordA>(this,
> >> >>> > "selectedRecordA"),
> >> >>> >        //                    recordAsModel,
> >> >>> >        //                    new RecordARenderer());
> >> >>> >
> >> >>> >        recordAs.setNullValid(false);
> >> >>> >
> >> >>> >        selectForm.add(recordAs);
> >> >>> >
> >> >>> >        add = new Button("add")
> >> >>> >        {
> >> >>> >            private static final long serialVersionUID = 1L;
> >> >>> >
> >> >>> >            public void onSubmit()
> >> >>> >            {
> >> >>> >                setSelectedRecordA(new RecordA());
> >> >>> >                isNew = true;
> >> >>> >                editLegend = "New";
> >> >>> >                editGroup.setVisible(true);
> >> >>> >                selectGroup.setVisible(false);
> >> >>> >            }
> >> >>> >        };
> >> >>> >
> >> >>> >        selectForm.add(add);
> >> >>> >
> >> >>> >        edit = new Button("edit")
> >> >>> >        {
> >> >>> >            private static final long serialVersionUID = 1L;
> >> >>> >
> >> >>> >            public void onSubmit()
> >> >>> >            {
> >> >>> >                if (selectedRecordA == null)
> >> >>> >                {
> >> >>> >                    info("You must select a record to edit.");
> >> >>> >                }
> >> >>> >                else
> >> >>> >                {
> >> >>> >                    unmodifiedRecordA =
> > selectedRecordA.getName();
> >> >>> >                    isNew = false;
> >> >>> >                    editLegend = "Edit";
> >> >>> >                    editGroup.setVisible(true);
> >> >>> >                    selectGroup.setVisible(false);
> >> >>> >                }
> >> >>> >            }
> >> >>> >        };
> >> >>> >
> >> >>> >        selectForm.add(edit);
> >> >>> >
> >> >>> >        delete = new Button("delete")
> >> >>> >        {
> >> >>> >            private static final long serialVersionUID = 1L;
> >> >>> >
> >> >>> >            public void onSubmit()
> >> >>> >            {
> >> >>> >                if (selectedRecordA == null)
> >> >>> >                {
> >> >>> >                    info("You must select a record to delete.");
> >> >>> >                }
> >> >>> >                else
> >> >>> >                {
> >> >>> >                    // Delete the selected record
> >> >>> >                    unmodifiedRecordA =
> > selectedRecordA.getName();
> >> >>> >
> >> recordAService.delete(selectedRecordA.getName());
> >> >>> >                    selectedRecordA = null;
> >> >>> >                    info("Deleted '" + unmodifiedRecordA + "'");
> >> >>> >
> >> >>> >                    // Force refresh of records list
> >> >>> >                    RecordAPanel.this.recordAsModel.detach();
> >> >>> >                }
> >> >>> >            }
> >> >>> >        };
> >> >>> >
> >> >>> >        // Add confirmation dialog box
> >> >>> >        delete.add(new SimpleAttributeModifier("onclick",
> >> >>> >                "if (!confirm('Please confirm you want to delete
> >> this
> >> >>> > record') ){ return false; }"));
> >> >>> >
> >> >>> >        selectForm.add(delete);
> >> >>> >        selectGroup.add(selectForm);
> >> >>> >
> >> >>> >        this.add(selectGroup);
> >> >>> >
> >> >>> >        // ************* Edit Group *************
> >> >>> >
> >> >>> >        editGroup = new WebMarkupContainer("editGroup");
> >> >>> >
> >> >>> >        editLegendLabel = new Label("editLegend", new
> >> >>> PropertyModel(this,
> >> >>> >                "editLegend"));
> >> >>> >
> >> >>> >        editGroup.add(editLegendLabel);
> >> >>> >
> >> >>> >        editForm = new Form("editForm");
> >> >>> >
> >> >>> >        recordALabel = new Label("recordALabel", "Record A");
> >> >>> >        editForm.add(recordALabel);
> >> >>> >
> >> >>> >        recordBLabel = new Label("recordBLabel", "Record B");
> >> >>> >        editForm.add(recordBLabel);
> >> >>> >
> >> >>> >        recordAText = new RequiredTextField("recordAText",
> >> >>> >                new PropertyModel(selectedRecordAModel, "name"));
> >> >>> >
> >> >>> >        editForm.add(recordAText);
> >> >>> >
> >> >>> >        recordBs = new DropDownChoice<RecordB>("recordBs");
> >> >>> >        recordBs.setModel(new PropertyModel(selectedRecordAModel,
> >> >>> > "recordB"));
> >> >>> >        recordBs.setChoices(RecordAPanel.this.getRecordBs());
> >> >>> >        recordBs.setChoiceRenderer(new RecordBRenderer());
> >> >>> >
> >> >>> >        editForm.add(recordBs);
> >> >>> >
> >> >>> >        save = new Button("save")
> >> >>> >        {
> >> >>> >            private static final long serialVersionUID = 1L;
> >> >>> >
> >> >>> >            @Override
> >> >>> >            public void onSubmit()
> >> >>> >            {
> >> >>> >                if (isNew)
> >> >>> >                {
> >> >>> >
> >> >>> > recordAService.create(RecordAPanel.this.selectedRecordA);
> >> >>> >                        info("Created '"
> >> >>> >                                +
> >> >>> > RecordAPanel.this.selectedRecordA.getName()
> >> >>> >                                + "'");
> >> >>> >                }
> >> >>> >                else
> >> >>> >                {
> >> >>> >                        recordAService.update(unmodifiedRecordA,
> >> >>> >
> > RecordAPanel.this.selectedRecordA);
> >> >>> >                        info("Updated '"
> >> >>> >                                +
> >> >>> > RecordAPanel.this.selectedRecordA.getName()
> >> >>> >                                + "'");
> >> >>> >                }
> >> >>> >
> >> >>> >                // TODO Update the dropdown list?
> >> >>> >
> >> >>> >                editGroup.setVisible(false);
> >> >>> >                selectGroup.setVisible(true);
> >> >>> >            }
> >> >>> >        };
> >> >>> >
> >> >>> >        editForm.add(save);
> >> >>> >
> >> >>> >        cancel = new Button("cancel")
> >> >>> >        {
> >> >>> >            private static final long serialVersionUID = 1L;
> >> >>> >
> >> >>> >            public void onSubmit()
> >> >>> >            {
> >> >>> >                RecordAPanel.this.selectedRecordA = null;
> >> >>> >                editGroup.setVisible(false);
> >> >>> >                selectGroup.setVisible(true);
> >> >>> >            }
> >> >>> >        };
> >> >>> >
> >> >>> >        cancel.setDefaultFormProcessing(false);
> >> >>> >        editForm.add(cancel);
> >> >>> >
> >> >>> >        editGroup.add(editForm);
> >> >>> >
> >> >>> >        editGroup.setVisible(false);
> >> >>> >        this.add(editGroup);
> >> >>> >    }
> >> >>> >
> >> >>> >    public RecordA getSelectedRecordA()
> >> >>> >    {
> >> >>> >        return selectedRecordA;
> >> >>> >    }
> >> >>> >
> >> >>> >    public void setSelectedRecordA(RecordA selectedRecordA)
> >> >>> >    {
> >> >>> >        this.selectedRecordA = selectedRecordA;
> >> >>> >    }
> >> >>> >
> >> >>> >    public LoadableDetachableModel<List<RecordA>> recordAsModel =
> >> new
> >> >>> > LoadableDetachableModel<List<RecordA>>()
> >> >>> >    {
> >> >>> >        private static final long serialVersionUID = 1L;
> >> >>> >
> >> >>> >        @Override
> >> >>> >        protected List<RecordA> load()
> >> >>> >        {
> >> >>> >            return recordAService.getList();
> >> >>> >        }
> >> >>> >
> >> >>> >        public void detach()
> >> >>> >        {
> >> >>> >            super.detach();
> >> >>> >        }
> >> >>> >    };
> >> >>> >
> >> >>> >    // TODO change this to LDM?
> >> >>> >    List<RecordB> getRecordBs()
> >> >>> >    {
> >> >>> >        return recordBService.getList();
> >> >>> >    }
> >> >>> >
> >> >>> >    class RecordARenderer implements IChoiceRenderer<RecordA>
> >> >>> >    {
> >> >>> >        private static final long serialVersionUID = 1L;
> >> >>> >
> >> >>> >        public Object getDisplayValue(RecordA recordA)
> >> >>> >        {
> >> >>> >            return recordA.getName();
> >> >>> >        }
> >> >>> >
> >> >>> >        public String getIdValue(RecordA recordA, int index)
> >> >>> >        {
> >> >>> >            return recordA.getName();
> >> >>> >        }
> >> >>> >    }
> >> >>> >
> >> >>> >    class RecordBRenderer implements IChoiceRenderer<RecordB>
> >> >>> >    {
> >> >>> >        private static final long serialVersionUID = 1L;
> >> >>> >
> >> >>> >        public Object getDisplayValue(RecordB recordB)
> >> >>> >        {
> >> >>> >            return recordB.getName();
> >> >>> >        }
> >> >>> >
> >> >>> >        public String getIdValue(RecordB recordB, int index)
> >> >>> >        {
> >> >>> >            return recordB.getName();
> >> >>> >        }
> >> >>> >    }
> >> >>> > }
> >> >>> >
> >> >>> > >
> >> >>> > > Shelli
> >> >>> > >
> >> >>> > > -----Original Message-----
> >> >>> > > From: Igor Vaynberg [mailto:igor.vaynb...@gmail.com]
> >> >>> > > Sent: Tuesday, October 12, 2010 10:38 AM
> >> >>> > > To: users@wicket.apache.org
> >> >>> > > Subject: Re: PropertyModel Not Refreshing
> >> >>> > >
> >> >>> > > here are the tweaks you need to make this work:
> >> >>> > >
> >> >>> > > selectedRecordAModel = new PropertyModel<RecordA>(this,
> >> >>> > "selectedRecordA");
> >> >>> > >
> >> >>> > > recordAText = new RequiredTextField("recordAText",
> >> >>> > >                new PropertyModel(selectedRecordAModel,
> > "name"));
> >> >>> > >
> >> >>> > >  recordBs.setModel(new PropertyModel(selectedRecordAModel,
> >> >>> "recordB"));
> >> >>> > >
> >> >>> > > have fun
> >> >>> > >
> >> >>> > > -igor
> >> >>> > >
> >> >>> > > On Tue, Oct 12, 2010 at 9:03 AM, Shelli Orton
> >> <shelli.or...@sjrb.ca>
> >> >>> > wrote:
> >> >>> > >> I've been able to create a sample application that exhibits
> > the
> >> >>> > >> same/similar problems to mine.  The sample makes use of an
> >> >>> in-memory
> >> >>> > >> list for the data versus accessing a database and so there's
> >> some
> >> >>> > >> differences.  However, I believe the problems that this
> > sample
> >> >>> exhibits
> >> >>> > >> have the same root cause as my project (which I believe have
> >> >>> something
> >> >>> > >> to do with how my models are set up...).
> >> >>> > >>
> >> >>> > >> Issues this sample exhibits:
> >> >>> > >>
> >> >>> > >> 1. Choose to edit an existing record, then cancel the edit.
> >> Choose
> >> >>> > >> another/the same record to edit and the selected record is
> > null
> >> >>> (error
> >> >>> > >> message "You must select a record to edit" is displayed).
> > Must
> >> >>> > >> close/open session to reset.
> >> >>> > >>
> >> >>> > >> 2. Choose to edit an existing record and save the edit.
> > Choose
> >> >>> > >> another/the same record to edit and you get a NPE:
> >> >>> > >>
> >> >>> > >>    WicketMessage: Method onFormSubmitted of interface
> >> >>> > >> org.apache.wicket.markup.html.form.IFormSubmitListener
> > targeted
> >> at
> >> >>> > >> component [MarkupContainer [Component id = selectForm]] threw
> >> an
> >> >>> > >> exception
> >> >>> > >>
> >> >>> > >>    Root cause:
> >> >>> > >>
> >> >>> > >>    java.lang.NullPointerException
> >> >>> > >>    at
> >> >>> > >>
> >> >>>
> >>
> > org.apache.wicket.markup.html.form.AbstractSingleSelectChoice.convertCho
> >> >>> > >> iceIdToChoice(AbstractSingleSelectChoice.java:247)
> >> >>> > >>
> >> >>> > >> 3. Create a new record and try to save it and get
> >> >>> > >> WicketRuntimeException:
> >> >>> > >>
> >> >>> > >>    WicketMessage: Attempted to set property value on a null
> >> object.
> >> >>> > >> Property expression: name Value: New One
> >> >>> > >>
> >> >>> > >>    Root cause:
> >> >>> > >>
> >> >>> > >>    org.apache.wicket.WicketRuntimeException: Attempted to set
> >> >>> property
> >> >>> > >> value on a null object. Property expression: name Value: New
> >> One
> >> >>> > >>    at
> >> >>> > >>
> >> >>>
> >>
> > org.apache.wicket.util.lang.PropertyResolver.setValue(PropertyResolver.j
> >> >>> > >> ava:125)
> >> >>> > >>
> >> >>> > >> 4. Create a new record and then cancel the add, Choose an
> >> existing
> >> >>> > >> record to edit and the selected record is null (error message
> >> "You
> >> >>> must
> >> >>> > >> select a record to edit" is displayed).  Must close/open
> >> session to
> >> >>> > >> reset.
> >> >>> > >>
> >> >>> > >> As always, all help is greatly appreciated as I am stumped.
> >> >>> > >>
> >> >>> > >> Thanks,
> >> >>> > >> Shelli
> >> >>> > >>
> >> >>> > >> -----Original Message-----
> >> >>> > >> From: jcgarciam [mailto:jcgarc...@gmail.com]
> >> >>> > >> Sent: Friday, October 08, 2010 1:41 PM
> >> >>> > >> To: users@wicket.apache.org
> >> >>> > >> Subject: Re: PropertyModel Not Refreshing
> >> >>> > >>
> >> >>> > >>
> >> >>> > >> The attachment didn't make it,
> >> >>> > >>
> >> >>> > >> Can you try to extract out the relevant part and creates a
> >> >>> quickstart
> >> >>> > >> project that actually reproduces your issue?
> >> >>> > >>
> >> >>> > >>
> >> >>> > >> On Fri, Oct 8, 2010 at 1:41 PM, Shelli Orton [via Apache
> >> Wicket] <
> >> >>> > >>
> >> >>>
> >>
> > ml-node+2968688-305091622-65...@n4.nabble.com<ml-node%2b2968688-305091622-65...@n4.nabble.com>
> <ml-node%2B2968688-30509162
> > 2-65...@n4.nabble.com>
> >> <ml-node%2B2968688-30509162
> >> 2-65...@n4.nabble.com>
> >> >>> <ml-node%2B2968688-30509162
> >> >>> 2-65...@n4.nabble.com>
> >> >>> > <ml-node%2B2968688-30509162
> >> >>> > >> 2-65...@n4.nabble.com>
> >> >>> > >>> wrote:
> >> >>> > >>
> >> >>> > >>> Hi,
> >> >>> > >>>
> >> >>> > >>> I have been trying different things to see if I could get my
> >> code
> >> >>> to
> >> >>> > >> work
> >> >>> > >>> (and understand Wicket models better), but am still stuck.
> > I
> >> have
> >> >>> a
> >> >>> > >>> attached the (latest) panel class code which I hope is
> >> sufficient
> >> >>> to
> >> >>> > >> help.
> >> >>> > >>>
> >> >>> > >>> I was reading about different models (both online and the
> >> Wicket
> >> >>> in
> >> >>> > >> Action
> >> >>> > >>> book) and thought that perhaps using a CompoundPropertyModel
> >> was
> >> >>> more
> >> >>> > >>> appropriate and may help with my issues.  Originally, I only
> >> >>> declared
> >> >>> > >>> selectedRecordA (line 40) but didn't instantiate it.  The
> >> select
> >> >>> group
> >> >>> > >>> displayed properly but when I chose a record from the list
> > and
> >> >>> tried
> >> >>> > >> to edit
> >> >>> > >>> it, this exception was thrown:
> >> >>> > >>>
> >> >>> > >>>     WicketMessage: Attempted to set property value on a null
> >> >>> object.
> >> >>> > >>> Property expression: recordA Value: Name=A-One
> >> >>> > >>>     Root cause:
> >> >>> > >>>
> >> >>> > >>>     org.apache.wicket.WicketRuntimeException: Attempted to
> > set
> >> >>> > >> property
> >> >>> > >>> value on a null object. Property expression: recordA Value:
> >> >>> Name=A-One
> >> >>> > >>>         at
> >> >>> > >>>
> >> >>> > >>
> >> >>>
> >>
> > org.apache.wicket.util.lang.PropertyResolver.setValue(PropertyResolver.j
> >> >>> > >> ava:125)
> >> >>> > >>>
> >> >>> > >>>         at
> >> >>> > >>>
> >> >>> > >>
> >> >>>
> >>
> > org.apache.wicket.model.AbstractPropertyModel.setObject(AbstractProperty
> >> >>> > >> Model.java:169)
> >> >>> > >>>
> >> >>> > >>>         at
> >> >>> > >>>
> >> >>>
> >> org.apache.wicket.Component.setDefaultModelObject(Component.java:3125)
> >> >>> > >>>         ....
> >> >>> > >>>
> >> >>> > >>> I set breakpoints on the getSelectedRecordA and
> >> setSelectedRecordA
> >> >>> > >> methods,
> >> >>> > >>> but these aren't called when during the request cycle when
> > the
> >> >>> edit
> >> >>> > >> button
> >> >>> > >>> is clicked.
> >> >>> > >>>
> >> >>> > >>> I then changed the class so that selectedRecordA is
> >> initialized to
> >> >>> an
> >> >>> > >> empty
> >> >>> > >>> instance of RecordA. This got rid of the above error.
> >> However, I
> >> >>> > >> cannot
> >> >>> > >>> save the edit changes because the selectedRecordA is still
> > the
> >> >>> empty
> >> >>> > >>> instance that was created in the initialization and the
> >> >>> persistence
> >> >>> > >> layer
> >> >>> > >>> throws an exception.  This same problem exists if I try to
> > add
> >> a
> >> >>> new
> >> >>> > >> RecordA
> >> >>> > >>> or try to delete an existing one.
> >> >>> > >>>
> >> >>> > >>> If I choose to cancel the edit and then select another
> > record
> >> to
> >> >>> edit,
> >> >>> > >> I
> >> >>> > >>> get the message "You must select a record to edit" (line
> > 131).
> >> >>> This
> >> >>> > >> is
> >> >>> > >>> because the cancel onSubmit sets selectedRecordA to null and
> >> >>> choosing
> >> >>> > >> the
> >> >>> > >>> record from the DDC is not setting it to the chosen record.
> >> >>> > >>>
> >> >>> > >>> Clearly I am not setting up this CompoundPropertyModel
> >> properly so
> >> >>> > >> that the
> >> >>> > >>> selectedARecord is set by the model.  Can someone tell me
> > what
> >> I'm
> >> >>> > >> doing
> >> >>> > >>> wrong?
> >> >>> > >>>
> >> >>> > >>> All help is greatly appreciated,
> >> >>> > >>>
> >> >>> > >>> Shelli
> >> >>> > >>>
> >> >>> > >>>
> >> >>> > >>> -----Original Message-----
> >> >>> > >>> From: Igor Vaynberg [mailto:[hidden
> >> >>> > >> email]<http://user/SendEmail.jtp?type=node&node=2968688&i=0>]
> >> >>> > >>>
> >> >>> > >>> Sent: Thursday, October 07, 2010 11:27 AM
> >> >>> > >>> To: [hidden email]
> >> >>> > >> <http://user/SendEmail.jtp?type=node&node=2968688&i=1>
> >> >>> > >>> Subject: Re: PropertyModel Not Refreshing
> >> >>> > >>>
> >> >>> > >>> you have posted an incomplete piece of code and somehow from
> >> that
> >> >>> we
> >> >>> > >>> are supposed to guess what is not working? create a
> > quickstart
> >> and
> >> >>> > >>> provide that.
> >> >>> > >>>
> >> >>> > >>> -igor
> >> >>> > >>>
> >> >>> > >>> On Thu, Oct 7, 2010 at 10:15 AM, Shelli Orton <[hidden
> >> >>> > >> email]<http://user/SendEmail.jtp?type=node&node=2968688&i=2>>
> >> >>> > >>> wrote:
> >> >>> > >>>
> >> >>> > >>> > Does nobody have any suggestions?  If I can't get this
> >> fixed,
> >> >>> I'm
> >> >>> > >> going
> >> >>> > >>> > to have to write the app in another framework (possibly
> > GWT)
> >> and
> >> >>> I'd
> >> >>> > >>> > really rather not have to do that.
> >> >>> > >>> >
> >> >>> > >>> > Shelli
> >> >>> > >>> >
> >> >>> > >>> > -----Original Message-----
> >> >>> > >>> > From: Shelli Orton
> >> >>> > >>> > Sent: Wednesday, October 06, 2010 3:52 PM
> >> >>> > >>> > To: [hidden
> >> >>> > >> email]<http://user/SendEmail.jtp?type=node&node=2968688&i=3>
> >> >>> > >>> > Subject: PropertyModel Not Refreshing
> >> >>> > >>> >
> >> >>> > >>> > Hi,
> >> >>> > >>> >
> >> >>> > >>> > First, thanks to all who have been helping me as I am new
> > to
> >> >>> Wicket.
> >> >>> > >> I
> >> >>> > >>> > am splitting out two issues I am dealing with to try to
> > keep
> >> >>> things
> >> >>> > >>> > clear.
> >> >>> > >>> >
> >> >>> > >>> > I am trying to write a simple app that does CRUD
> > operations
> >> on
> >> >>> > >> database
> >> >>> > >>> > records.  The goal is for the app to make use of a tab
> > panel
> >> >>> where
> >> >>> > >> each
> >> >>> > >>> > tab encapsulates one table from the database.  Each tab
> >> panel
> >> >>> has
> >> >>> > >> two
> >> >>> > >>> > groups (WebMarkupContainer).  The first, selectGroup,
> >> displays a
> >> >>> > >> list
> >> >>> > >>> > (DDC) of the current items, and three buttons, add, edit
> > and
> >> >>> delete.
> >> >>> > >>> > The second, editGroup, is displayed when either the add or
> >> edit
> >> >>> > >> button
> >> >>> > >>> > was clicked on the select group, displays the record
> >> attributes
> >> >>> and
> >> >>> > >> save
> >> >>> > >>> > and cancel buttons.  The tab panel has a "selectedRecord"
> >> which
> >> >>> is
> >> >>> > >> used
> >> >>> > >>> > by both groups' components via PropertyModels. Very basic
> >> stuff.
> >> >>> > >>> >
> >> >>> > >>> > When I choose a record and click the edit button, the
> > record
> >> is
> >> >>> > >>> > displayed in the edit group properly.  If I then choose
> >> cancel,
> >> >>> the
> >> >>> > >> edit
> >> >>> > >>> > group is no longer displayed and the select group DDC
> >> selection
> >> >>> is
> >> >>> > >> null
> >> >>> > >>> > as expected. I then choose another record from the list
> > and
> >> >>> click
> >> >>> > >> the
> >> >>> > >>> > edit button and the previous record information is
> > displayed
> >> in
> >> >>> the
> >> >>> > >> edit
> >> >>> > >>> > group even though the select group DDC shows the
> >> >>> correct/selected
> >> >>> > >>> > record.
> >> >>> > >>> >
> >> >>> > >>> > This problem also occurs if I first choose to add a new
> >> record
> >> >>> and
> >> >>> > >> then
> >> >>> > >>> > cancel the add and then choose to edit a different record.
> >> The
> >> >>> DDC
> >> >>> > >>> > shows the correct/selected record, but all the attributes
> > in
> >> the
> >> >>> > >> edit
> >> >>> > >>> > group are null/defaults for a new record.
> >> >>> > >>> >
> >> >>> > >>> > If I remove the call to setDefaultFormProcessing(false) on
> >> the
> >> >>> > >> cancel
> >> >>> > >>> > button, selecting other records for edit works correctly,
> >> but I
> >> >>> > >> can't
> >> >>> > >>> > cancel a creating a new record if I use a
> > RequiredTextField
> >> >>> because
> >> >>> > >> the
> >> >>> > >>> > form validation fails.
> >> >>> > >>> >
> >> >>> > >>> > If I select a record for editing or save the newly created
> >> >>> record, I
> >> >>> > >> can
> >> >>> > >>> > select a different record for edit or create another one
> >> >>> correctly.
> >> >>> > >> So
> >> >>> > >>> > I must be doing something wrong in the cancel logic. My
> >> editForm
> >> >>> > >>> > (created in the EditGroup constructor) looks like this:
> >> >>> > >>> >
> >> >>> > >>> >            Form editForm = new Form("editForm");
> >> >>> > >>> >
> >> >>> > >>> >            editForm.add(new Label("nameLabel", "Name"));
> >> >>> > >>> >
> >> >>> > >>> >            editForm.add(new Label("attributeLabel",
> >> >>> "Attribute"));
> >> >>> > >>> >
> >> >>> > >>> >            editForm.add(new
> >> >>> > >> RequiredTextField<String>("recordNameText",
> >> >>> > >>> >                    new
> >> PropertyModel<String>(MyRecordPanel.this,
> >> >>> > >>> >                            "selectedRecord.name")));
> >> >>> > >>> >
> >> >>> > >>> >            editForm.add(new
> >> DropDownChoice<Lir>("attributes",
> >> >>> > >>> >                    new
> >> >>> PropertyModel<Attribute>(MyRecordPanel.this,
> >> >>> > >>> >                            "selectedRecord.attribute"),
> >> >>> > >>> >                    RateCentrePanel.this.getAttributes(),
> >> >>> > >>> >                    new AttributeRenderer()));
> >> >>> > >>> >
> >> >>> > >>> >            ....
> >> >>> > >>> >
> >> >>> > >>> >            editForm.add(new Button("cancel")
> >> >>> > >>> >            {
> >> >>> > >>> >                private static final long serialVersionUID
> > =
> >> 1L;
> >> >>> > >>> >
> >> >>> > >>> >                public void onSubmit()
> >> >>> > >>> >                {
> >> >>> > >>> >                    MyRecordPanel.this.selectedRecord =
> > null;
> >> >>> > >>> >                    editGroup.setVisible(false);
> >> >>> > >>> >                    selectGroup.setVisible(true);
> >> >>> > >>> >                }
> >> >>> > >>> >            }.setDefaultFormProcessing(false));
> >> >>> > >>> >
> >> >>> > >>> >            add(editForm);
> >> >>> > >>> >
> >> >>> > >>> > Other than setting the selectedRecord to null, what should
> > I
> >> be
> >> >>> > >> doing
> >> >>> > >>> > differently?
> >> >>> > >>> >
> >> >>> > >>> > Thanks in advance!
> >> >>> > >>> >
> >> >>> > >>> > Shelli
> >> >>> > >>> >
> >> >>> > >>> >
> >> >>> > >>
> >> >>>
> >> ---------------------------------------------------------------------
> >> >>> > >>> > To unsubscribe, e-mail: [hidden
> >> >>> > >> email]<http://user/SendEmail.jtp?type=node&node=2968688&i=4>
> >> >>> > >>> > For additional commands, e-mail: [hidden
> >> >>> > >> email]<http://user/SendEmail.jtp?type=node&node=2968688&i=5>
> >> >>> > >>> >
> >> >>> > >>> >
> >> >>> > >>> >
> >> >>> > >>
> >> >>>
> >> ---------------------------------------------------------------------
> >> >>> > >>> > To unsubscribe, e-mail: [hidden
> >> >>> > >> email]<http://user/SendEmail.jtp?type=node&node=2968688&i=6>
> >> >>> > >>> > For additional commands, e-mail: [hidden
> >> >>> > >> email]<http://user/SendEmail.jtp?type=node&node=2968688&i=7>
> >> >>> > >>> >
> >> >>> > >>> >
> >> >>> > >>>
> >> >>>
> >> ---------------------------------------------------------------------
> >> >>> > >>> To unsubscribe, e-mail: [hidden
> >> >>> > >> email]<http://user/SendEmail.jtp?type=node&node=2968688&i=8>
> >> >>> > >>> For additional commands, e-mail: [hidden
> >> >>> > >> email]<http://user/SendEmail.jtp?type=node&node=2968688&i=9>
> >> >>> > >>>
> >> >>> > >>>
> >> >>> > >>>
> >> >>> > >>>
> >> >>> > >>>
> >> >>>
> >> ---------------------------------------------------------------------
> >> >>> > >>> To unsubscribe, e-mail: [hidden
> >> >>> > >> email]<http://user/SendEmail.jtp?type=node&node=2968688&i=10>
> >> >>> > >>> For additional commands, e-mail: [hidden
> >> >>> > >> email]<http://user/SendEmail.jtp?type=node&node=2968688&i=11>
> >> >>> > >>>
> >> >>> > >>> ------------------------------
> >> >>> > >>>  View message @
> >> >>> > >>>
> >> >>> > >>
> >> >>> >
> >> >>>
> >>
> > http://apache-wicket.1842946.n4.nabble.com/DropDownChoice-Model-Confusio
> >> >>> > >> n-tp2955144p2968688.html
> >> >>> > >>> To start a new topic under Apache Wicket, email
> >> >>> > >>>
> >> >>> > >>
> >> >>>
> >>
> > ml-node+1842946-398011874-65...@n4.nabble.com<ml-node%2b1842946-398011874-65...@n4.nabble.com>
> <ml-node%2B1842946-39801187
> > 4-65...@n4.nabble.com>
> >> <ml-node%2B1842946-39801187
> >> 4-65...@n4.nabble.com>
> >> >>> <ml-node%2B1842946-39801187
> >> >>> 4-65...@n4.nabble.com>
> >> >>> > <ml-node%2B1842946-39801187
> >> >>> > >> 4-65...@n4.nabble.com>
> >> >>> > >>> To unsubscribe from Apache Wicket, click
> >> >>> > >>
> >> >>>
> >>
> > here<http://apache-wicket.1842946.n4.nabble.com/template/TplServlet.jtp
> >> >>> > ?
> >> >>> > >>
> >> >>>
> >>
> > tpl=unsubscribe_by_code&node=1842946&code=amNnYXJjaWFtQGdtYWlsLmNvbXwxOD
> >> >>> > >> QyOTQ2fDEyNTYxMzc3ODY=>.
> >> >>> > >>>
> >> >>> > >>>
> >> >>> > >>>
> >> >>> > >>
> >> >>> > >>
> >> >>> > >> --
> >> >>> > >> Sincerely,
> >> >>> > >> JC (http://www.linkedin.com/in/jcgarciam)
> >> >>> > >> Work smarter, not harder!.
> >> >>> > >>
> >> >>> > >> --
> >> >>> > >> View this message in context:
> >> >>> > >>
> >> >>> >
> >> >>>
> >>
> > http://apache-wicket.1842946.n4.nabble.com/DropDownChoice-Model-Confusio
> >> >>> > >> n-tp2955144p2968936.html
> >> >>> > >> Sent from the Users forum 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
> >> >>> > >>
> >> >>> > >>
> >> >>> > >>
> >> >>> > >>
> >> >>>
> >> ---------------------------------------------------------------------
> >> >>> > >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> >> >>> > >> For additional commands, e-mail: users-h...@wicket.apache.org
> >> >>> > >>
> >> >>> > >
> >> >>> > >
> >> >>>
> >> ---------------------------------------------------------------------
> >> >>> > > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> >> >>> > > For additional commands, e-mail: users-h...@wicket.apache.org
> >> >>> > >
> >> >>> > >
> >> >>> > >
> >> >>>
> >> ---------------------------------------------------------------------
> >> >>> > > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> >> >>> > > For additional commands, e-mail: users-h...@wicket.apache.org
> >> >>> > >
> >> >>> > >
> >> >>> >
> >> >>> >
> >> ---------------------------------------------------------------------
> >> >>> > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> >> >>> > For additional commands, e-mail: users-h...@wicket.apache.org
> >> >>> >
> >> >>> >
> >> >>> >
> >> ---------------------------------------------------------------------
> >> >>> > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> >> >>> > For additional commands, e-mail: users-h...@wicket.apache.org
> >> >>> >
> >> >>> >
> >> >>>
> >> >>>
> >> ---------------------------------------------------------------------
> >> >>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> >> >>> For additional commands, e-mail: users-h...@wicket.apache.org
> >> >>>
> >> >>>
> >> >>
> >> >
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> >> For additional commands, e-mail: users-h...@wicket.apache.org
> >>
> >>
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> > For additional commands, e-mail: users-h...@wicket.apache.org
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
>
>

Reply via email to