problem populating ListMultipleChoice selection model

2010-04-19 Thread Ray Weidner
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

2010-04-19 Thread moèz ben rhouma
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

2010-04-19 Thread Ray Weidner
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