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 List<Participation> 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);
            List<Participation> 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

Reply via email to