Отправка страницы не обновляет мою модель? - PullRequest
1 голос
/ 05 марта 2010

Пожалуйста, позвольте мне предвосхитить это, сказав, что я довольно новичок в веб-разработке на 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;
}

Ответы [ 2 ]

1 голос
/ 06 марта 2010

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

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

Все хорошо сейчас!

0 голосов
/ 05 марта 2010

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

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

...