Re: RadioChoice and ListView

2007-08-30 Thread Alex Pine
Thank you Carlos, that fixed the problem! However, I still don't quite
understand why. I guess I don't understand PropertyModel as well as I
thought I did. What does PropertyModel do that allows the ParticipationList
to be referenced across the two requests?
Thanks again!
-Alex Pine

On 8/30/07, Carlos Pita [EMAIL PROTECTED] wrote:

 This looks wrong too:

ListParticipation participationList = exModel.getEx
 ().getParticipationList();

ListView subjectListView = new ListView(list,
 participationList) {

 if your experiment model is intended to be a detachable one, ie. if you
 are
 loading it from a database or something, then you shouldn't instantiate
 the
 listview with a list but with a model that loads that list (or delegates
 to
 another model that eventually loads the entity to which the collection
 belongs...). If you pass the plain collection you are defeating the entire
 purpose of having the loadabledetachablemodel in the first place. For
 example, use new ListView(list,
 new PropertyModel(exModel, participationList));

 Regards,
 Carlos


 On 8/29/07, Igor Vaynberg [EMAIL PROTECTED] wrote:
 
  break in your onsubmit and look at the list that the listview is
 pointing
  to. make sure the data is there, the fact that it isnt being persisted
  might
  be a problem outside of wicket's scope.
 
  -igor
 
 
  On 8/29/07, Alex Pine [EMAIL PROTECTED] wrote:
  
   I'm sorry to spam the list like this, but I really need help on this.
   Igor's
   solution doesn't seem to change anything. No information is
 transferred
  to
   the database upon hitting on submit. If no one knows the solution,
  does
   anyone have any ideas on how I could debug this? Is there some way I
 can
   reference the selections of the radiogroups from the the onSubmit
 method
   so
   I can see what their values are?
   Thanks for any help you can give,
   Alex
  
   On 8/29/07, Alex Pine [EMAIL PROTECTED] wrote:
   
Thank you for the quick reply, but this fix doesn't seem to work.
 The
selections are never persisted on form submit. Any ideas?
   
On 8/29/07, Igor Vaynberg [EMAIL PROTECTED] wrote:

 problem is here

 RadioGroup rg = new RadioGroup(choice);

 you are not setting the model for the radiogroup choice so your
   choices
 go
 no where

 RadioGroup rg = new RadioGroup(choice, new PropertyModel(
 item.getModel(),
 status));

 or leave it as it is and use PropertyListView instead

 -igor


 On 8/29/07, Alex Pine [EMAIL PROTECTED] wrote:
 
  Hi all,
  I'm trying to use a Radio Choice component inside a Listview so
  that
 each
  list
  item has one RadioGroup with three choices. When the form submit
 button is
  pressed,
  each selected choice should set a field in the model object of
  each
 list
  item.
  The code below should explain the problem more fully:
 
 
  /*
  The ultimate goal is to set the status field in each
  Participation
  object
  in the participationList of the object below.
  */
  public class Experiment {
 
private String name;
 
private ListParticipation participationList;
 
/* Other fields, constructors, getters, setters, etc */
 
  }
 
 
  public class Participation {
 
  public static final int PARTICIPATED = 1;
  public static final int NO_SHOW = -1;
  public static final int SHOWED = 0;
 
  private User user;
 
  private int status;
 
  public Participation() {
  status = SHOWED; // Default value
  }
 
  /* getters, setters, etc */
  }
 
 
  /* This is the web page that is supposed to do the setting*/
  public class ParticipationPage extends BasePage {
 
  private static final long serialVersionUID = 1L;
 
  @SpringBean
  private ExperimentDAO exDAO;
 
  private DetachableExperimentModel exModel;
 
  public ParticipationPage(Experiment ex) {
  exModel = new DetachableExperimentModel(ex, exDAO);
  add(new ParticipationForm(form));
  exModel.detach();
  }
 
  class ParticipationForm extends Form {
 
  public ParticipationForm(String id) {
  super(id);
  ListParticipation participationList =
 exModel.getEx
  ().getParticipationList();
 
  ListView subjectListView = new ListView(list,
  participationList) {
 
  private static final long serialVersionUID = 1L;
 
  /*
   I imagine the correct code should be something
  like
  this...?
   */
  public void populateItem(final ListItem item) {
  Participation participation =
  

Re: RadioChoice and ListView

2007-08-29 Thread Igor Vaynberg
problem is here

RadioGroup rg = new RadioGroup(choice);

you are not setting the model for the radiogroup choice so your choices go
no where

RadioGroup rg = new RadioGroup(choice, new PropertyModel(item.getModel(),
status));

or leave it as it is and use PropertyListView instead

-igor


On 8/29/07, Alex Pine [EMAIL PROTECTED] wrote:

 Hi all,
 I'm trying to use a Radio Choice component inside a Listview so that each
 list
 item has one RadioGroup with three choices. When the form submit button is
 pressed,
 each selected choice should set a field in the model object of each list
 item.
 The code below should explain the problem more fully:


 /*
 The ultimate goal is to set the status field in each Participation
 object
 in the participationList of the object below.
 */
 public class Experiment {

   private String name;

   private ListParticipation participationList;

   /* Other fields, constructors, getters, setters, etc */

 }


 public class Participation {

 public static final int PARTICIPATED = 1;
 public static final int NO_SHOW = -1;
 public static final int SHOWED = 0;

 private User user;

 private int status;

 public Participation() {
 status = SHOWED; // Default value
 }

 /* getters, setters, etc */
 }


 /* This is the web page that is supposed to do the setting*/
 public class ParticipationPage extends BasePage {

 private static final long serialVersionUID = 1L;

 @SpringBean
 private ExperimentDAO exDAO;

 private DetachableExperimentModel exModel;

 public ParticipationPage(Experiment ex) {
 exModel = new DetachableExperimentModel(ex, exDAO);
 add(new ParticipationForm(form));
 exModel.detach();
 }

 class ParticipationForm extends Form {

 public ParticipationForm(String id) {
 super(id);
 ListParticipation participationList = exModel.getEx
 ().getParticipationList();

 ListView subjectListView = new ListView(list,
 participationList) {

 private static final long serialVersionUID = 1L;

 /*
  I imagine the correct code should be something like
 this...?
  */
 public void populateItem(final ListItem item) {
 Participation participation =
 (Participation)item.getModelObject();
 item.add(new Label(name, participation.getUser
 ().getName()));
 RadioGroup rg = new RadioGroup(choice);
 rg.add(new Radio(participated, new Model(
 Participation.PARTICIPATED)));
 rg.add(new Radio(no show, new Model(
 Participation.NO_SHOW)));
 rg.add(new Radio(showed, new Model(
 Participation.SHOWED)));
 item.add(rg);
 }
 };
 subjectListView.setReuseItems(true);
 add(subjectListView);
 }

 @Override
 protected void onSubmit() {

   /*
* Somehow I have to set each Participation object in the user's
 participationList
* to the choice from corresponding the radio group.
*/

 exDAO.persistExperiment(exModel.getEx());
 exModel.detach();
 }
 }
 }

 Does anyone know how to do this easily? I imagine it's not difficult, I
 just
 can't figure it out
 from the examples on the web.
 Thanks!
 -Alex Pine



Re: RadioChoice and ListView

2007-08-29 Thread Alex Pine
I'm sorry to spam the list like this, but I really need help on this. Igor's
solution doesn't seem to change anything. No information is transferred to
the database upon hitting on submit. If no one knows the solution, does
anyone have any ideas on how I could debug this? Is there some way I can
reference the selections of the radiogroups from the the onSubmit method so
I can see what their values are?
Thanks for any help you can give,
Alex

On 8/29/07, Alex Pine [EMAIL PROTECTED] wrote:

 Thank you for the quick reply, but this fix doesn't seem to work. The
 selections are never persisted on form submit. Any ideas?

 On 8/29/07, Igor Vaynberg [EMAIL PROTECTED] wrote:
 
  problem is here
 
  RadioGroup rg = new RadioGroup(choice);
 
  you are not setting the model for the radiogroup choice so your choices
  go
  no where
 
  RadioGroup rg = new RadioGroup(choice, new PropertyModel(
  item.getModel(),
  status));
 
  or leave it as it is and use PropertyListView instead
 
  -igor
 
 
  On 8/29/07, Alex Pine [EMAIL PROTECTED] wrote:
  
   Hi all,
   I'm trying to use a Radio Choice component inside a Listview so that
  each
   list
   item has one RadioGroup with three choices. When the form submit
  button is
   pressed,
   each selected choice should set a field in the model object of each
  list
   item.
   The code below should explain the problem more fully:
  
  
   /*
   The ultimate goal is to set the status field in each Participation
   object
   in the participationList of the object below.
   */
   public class Experiment {
  
 private String name;
  
 private ListParticipation participationList;
  
 /* Other fields, constructors, getters, setters, etc */
  
   }
  
  
   public class Participation {
  
   public static final int PARTICIPATED = 1;
   public static final int NO_SHOW = -1;
   public static final int SHOWED = 0;
  
   private User user;
  
   private int status;
  
   public Participation() {
   status = SHOWED; // Default value
   }
  
   /* getters, setters, etc */
   }
  
  
   /* This is the web page that is supposed to do the setting*/
   public class ParticipationPage extends BasePage {
  
   private static final long serialVersionUID = 1L;
  
   @SpringBean
   private ExperimentDAO exDAO;
  
   private DetachableExperimentModel exModel;
  
   public ParticipationPage(Experiment ex) {
   exModel = new DetachableExperimentModel(ex, exDAO);
   add(new ParticipationForm(form));
   exModel.detach();
   }
  
   class ParticipationForm extends Form {
  
   public ParticipationForm(String id) {
   super(id);
   ListParticipation participationList = exModel.getEx
   ().getParticipationList();
  
   ListView subjectListView = new ListView(list,
   participationList) {
  
   private static final long serialVersionUID = 1L;
  
   /*
I imagine the correct code should be something like
   this...?
*/
   public void populateItem(final ListItem item) {
   Participation participation =
   (Participation)item.getModelObject();
   item.add(new Label(name, participation.getUser
   ().getName()));
   RadioGroup rg = new RadioGroup(choice);
   rg.add (new Radio(participated, new Model(
   Participation.PARTICIPATED)));
   rg.add(new Radio(no show, new Model(
   Participation.NO_SHOW)));
   rg.add(new Radio(showed, new Model(
   Participation.SHOWED)));
   item.add(rg);
   }
   };
   subjectListView.setReuseItems (true);
   add(subjectListView);
   }
  
   @Override
   protected void onSubmit() {
  
 /*
  * Somehow I have to set each Participation object in the user's
 
   participationList
  * to the choice from corresponding the radio group.
  */
  
   exDAO.persistExperiment(exModel.getEx());
   exModel.detach();
   }
   }
   }
  
   Does anyone know how to do this easily? I imagine it's not difficult,
  I
   just
   can't figure it out
   from the examples on the web.
   Thanks!
   -Alex Pine