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