got point igor.. The first thing I did with the project was copying over the start.java..Having break points etc just gives it a better sense..
Shelli heres the start.java: import org.mortbay.jetty.Connector; import org.mortbay.jetty.Server; import org.mortbay.jetty.bio.SocketConnector; import org.mortbay.jetty.webapp.WebAppContext; public class Start { public static void main(String[] args) throws Exception { Server server = new Server(); SocketConnector connector = new SocketConnector(); // Set some timeout options to make debugging easier. connector.setMaxIdleTime(1000 * 60 * 60); connector.setSoLingerTime(-1); connector.setPort(8081); server.setConnectors(new Connector[] { connector }); WebAppContext bb = new WebAppContext(); bb.setServer(server); bb.setContextPath("/"); bb.setWar("src/main/webapp"); // START JMX SERVER // MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer(); // MBeanContainer mBeanContainer = new MBeanContainer(mBeanServer); // server.getContainer().addEventListener(mBeanContainer); // mBeanContainer.start(); server.addHandler(bb); try { System.out.println(">>> STARTING EMBEDDED JETTY SERVER, PRESS ANY KEY TO STOP"); server.start(); while (System.in.available() == 0) { Thread.sleep(5000); } server.stop(); server.join(); } catch (Exception e) { e.printStackTrace(); System.exit(100); } } } Good night - Nino 2010/10/12 Igor Vaynberg <igor.vaynb...@gmail.com> > you should first try and understand how models work. there is this > page to help you: > > https://cwiki.apache.org/WICKET/working-with-wicket-models.html > > but nothing will be better then setting some breakpoints and seeing > how things actually work. > > -igor > > On Tue, Oct 12, 2010 at 2:24 PM, Shelli Orton <shelli.or...@sjrb.ca> > wrote: > > 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-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-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 > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > >