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.java:125)
        at 
org.apache.wicket.model.AbstractPropertyModel.setObject(AbstractPropertyModel.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:igor.vaynb...@gmail.com] 
Sent: Thursday, October 07, 2010 11:27 AM
To: users@wicket.apache.org
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 <shelli.or...@sjrb.ca> 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: users@wicket.apache.org
> 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: 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