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

Reply via email to