problem populating ListMultipleChoice selection model
Hi All, I'm trying to do something pretty simple: create a choice list with multi-select, which I iterate through upon clicking a button. Unfortunately, it looks like my selections aren't being recorded in the model that's supposed to receive them. Here's what the pertinent code looks like: - Java: public EditIssuePage extends WebPage { // I've tried removing the 'transient' keyword, but that doesn't change anything transient private Set Party selectedParties = new HashMap Party (); ... public EditIssuePage () { ... Form form = new Form (editIssueForm); add (form); ... ListMultipleChoice Party partyChoice = new ListMultipleChoice Party ( parties, new PropertyModel (this, selectedParties), new LoadableDetachableModel List Party () { @Override public List Party load () { return new Vector Party (retrieveAllPartiesFromDAO ()); } }, new IChoiceRenderer Party () { public Object getDisplayValue (Party object) { return object.getFullName (); } public String getIdValue (Party object, int index) { return object.getId (); } } ); Button addPartiesButton = new Button (addPartiesButton) { @Override public void onSubmit () { logger.debug (Number of selected parties: + selectedParties.size ()); // always reporting zero! for (Party selectedParty : selectedParties) { ... } } }; form.add (partyChoice); form.add (addPartiesButton); } private Set Party retrieveAllPartiesFromDAO () { // does what it sounds like } } - HTML: (My memory is a bit hazy here; I don't have any of this code in front of me as I write this) ... select multiple wicket:id=parties option[A party should be here]/option /select submit wicket:id=addPartiesButton name=Add Selected Parties/ ... The page renders fine, with all Party objects listed for selection. But when I select one or more of the rows and click the button, the log message I see is Number of selected parties: 0, no matter what. I have very similar logic working on another page, so I'm pretty confused about what's the problem here. All advice is much appreciated. Thanks, Ray Weidner
Re: problem populating ListMultipleChoice selection model
Try to change the type of selectedParties from set to List selectedParties = new ArrayList(); 2010/4/19 Ray Weidner ray.weidner.wic...@gmail.com Hi All, I'm trying to do something pretty simple: create a choice list with multi-select, which I iterate through upon clicking a button. Unfortunately, it looks like my selections aren't being recorded in the model that's supposed to receive them. Here's what the pertinent code looks like: - Java: public EditIssuePage extends WebPage { // I've tried removing the 'transient' keyword, but that doesn't change anything transient private Set Party selectedParties = new HashMap Party (); ... public EditIssuePage () { ... Form form = new Form (editIssueForm); add (form); ... ListMultipleChoice Party partyChoice = new ListMultipleChoice Party ( parties, new PropertyModel (this, selectedParties), new LoadableDetachableModel List Party () { @Override public List Party load () { return new Vector Party (retrieveAllPartiesFromDAO ()); } }, new IChoiceRenderer Party () { public Object getDisplayValue (Party object) { return object.getFullName (); } public String getIdValue (Party object, int index) { return object.getId (); } } ); Button addPartiesButton = new Button (addPartiesButton) { @Override public void onSubmit () { logger.debug (Number of selected parties: + selectedParties.size ()); // always reporting zero! for (Party selectedParty : selectedParties) { ... } } }; form.add (partyChoice); form.add (addPartiesButton); } private Set Party retrieveAllPartiesFromDAO () { // does what it sounds like } } - HTML: (My memory is a bit hazy here; I don't have any of this code in front of me as I write this) ... select multiple wicket:id=parties option[A party should be here]/option /select submit wicket:id=addPartiesButton name=Add Selected Parties/ ... The page renders fine, with all Party objects listed for selection. But when I select one or more of the rows and click the button, the log message I see is Number of selected parties: 0, no matter what. I have very similar logic working on another page, so I'm pretty confused about what's the problem here. All advice is much appreciated. Thanks, Ray Weidner
Re: problem populating ListMultipleChoice selection model
Hi Moez, I'll give that a try when I have the code in front of me. But I'd be surprised if that works, because I am doing precisely the same thing on another page, including using a Set for the selected item model. In that instance, there's no problem. On Mon, Apr 19, 2010 at 11:55 AM, moèz ben rhouma benrhouma.m...@gmail.comwrote: Try to change the type of selectedParties from set to List selectedParties = new ArrayList(); 2010/4/19 Ray Weidner ray.weidner.wic...@gmail.com Hi All, I'm trying to do something pretty simple: create a choice list with multi-select, which I iterate through upon clicking a button. Unfortunately, it looks like my selections aren't being recorded in the model that's supposed to receive them. Here's what the pertinent code looks like: - Java: public EditIssuePage extends WebPage { // I've tried removing the 'transient' keyword, but that doesn't change anything transient private Set Party selectedParties = new HashMap Party (); ... public EditIssuePage () { ... Form form = new Form (editIssueForm); add (form); ... ListMultipleChoice Party partyChoice = new ListMultipleChoice Party ( parties, new PropertyModel (this, selectedParties), new LoadableDetachableModel List Party () { @Override public List Party load () { return new Vector Party (retrieveAllPartiesFromDAO ()); } }, new IChoiceRenderer Party () { public Object getDisplayValue (Party object) { return object.getFullName (); } public String getIdValue (Party object, int index) { return object.getId (); } } ); Button addPartiesButton = new Button (addPartiesButton) { @Override public void onSubmit () { logger.debug (Number of selected parties: + selectedParties.size ()); // always reporting zero! for (Party selectedParty : selectedParties) { ... } } }; form.add (partyChoice); form.add (addPartiesButton); } private Set Party retrieveAllPartiesFromDAO () { // does what it sounds like } } - HTML: (My memory is a bit hazy here; I don't have any of this code in front of me as I write this) ... select multiple wicket:id=parties option[A party should be here]/option /select submit wicket:id=addPartiesButton name=Add Selected Parties/ ... The page renders fine, with all Party objects listed for selection. But when I select one or more of the rows and click the button, the log message I see is Number of selected parties: 0, no matter what. I have very similar logic working on another page, so I'm pretty confused about what's the problem here. All advice is much appreciated. Thanks, Ray Weidner