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