Отправка страницы не обновляет мою модель?

Пожалуйста, позвольте мне предварить это, сказав, что я довольно новичок в веб-разработке Java, поэтому я надеюсь, что правильно объясняю эту проблему.

Я унаследовал веб-сайт калитки от парня, который уехал на более зеленые пастбища, и был запрос, чтобы попросить новых пользователей указать свою расу и этническую принадлежность при регистрации на веб-сайте. Итак, я добавил на страницу соответствующие вопросы... пока все хорошо.

Проблема, с которой я сталкиваюсь сейчас, заключается в том, что когда я отправляю страницу, новые значения, похоже, не обновляются. Я собираюсь опубликовать здесь код для расового вопроса, но вопрос об этнической принадлежности почти идентичен. Важно отметить, что пользователь должен иметь возможность выбрать более одной расы или вообще не выбирать расы при регистрации.

Моя соответствующая наценка:

<span wicket:id="selectOneOrMoreRaces">Select one or more races to indicate what you consider yourself to be.</span>
<br />
<span class="field" wicket:id="races">
  <span wicket:id="races">
    <input wicket:id="races.value" type="checkbox" />
    <span wicket:id="racDesc" style="font-weight:normal;">Race Text</span>
    <br />
  </span>
</span>

Вот кусок кода для этой страницы:

String raceQuestion = fhDAO.getRaceQuestion();
Label selectOneOrMoreRacesLabel = new Label("selectOneOrMoreRaces", new Model(raceQuestion));
add(selectOneOrMoreRacesLabel);

CheckGroup racesCheckGroup = new CheckGroup("races");
add(racesCheckGroup);
ListView races = new ListView("races", fhDAO.getRaceAnswers())
{
  protected void populateItem(ListItem item)
  {
    RaceAnswer access = (RaceAnswer)item.getModelObject();
    CheckBox chk = new CheckBox("races.value", new Model(access.getValue()));
    item.add(chk);
    item.add(new Label("racDesc", access.getDescription()));
  }
};
racesCheckGroup.add(races);

Вот модель для RaceAnswers:

public class RaceAnswer implements Serializable
{
    private String _description;
    private String _value;

    public RaceAnswer(String description, String value)
    {
        _description = description;
        _value = value;
    }

    public String getDescription()
    {
        return _description;
    }

    public String getValue()
    {
        return _value;
    }
}

И, наконец, соответствующий код для моего свойства рас в моем пользовательском классе:

private ArrayList<RaceAnswer> race;

public ArrayList<RaceAnswer> getRaces()
{
  return race;
}

public void setRaces(ArrayList<RaceAnswer> races)
{
  race = races;
}

person Sonny Boy    schedule 04.03.2010    source источник


Ответы (2)


Я наконец исправил это. Было пару проблем...

Во-первых, я должен был использовать Check, а не CheckBox. Это изменение выявило тот факт, что мои коллекции возвращались из моей модели как нулевые, а не просто пустые (но созданные) коллекции, как я ожидал.

Теперь все хорошо!

person Sonny Boy    schedule 05.03.2010

Я ненавижу просить больше кода, так как вы уже опубликовали довольно много, но трудности чаще всего связаны с тем, как модели прикрепляются к форме, а сама форма отсутствует в вашем опубликованном коде, поэтому публикуйте немного больше кода формы может помочь в диагностике.

Между тем, вы, возможно, уже видели это, но есть простой пример использования CheckGroup в форме, которая может быть полезна среди примеров на примеры wicketstuff 1.3 или примеры wicketstuff 1.4.

person Don Roby    schedule 05.03.2010