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>
> >>> > >>> 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>
> >>> > >>> 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
>
>

Reply via email to