Изпращането на страница не актуализира моя модел?

Моля, позволете ми да предговоря това, като кажа, че съм почти нов в уеб разработката на Java, така че се надявам, че обяснявам този проблем правилно.

Наследих уебсайт за wicket от приятел, който замина за по-зелени пасища и имаше искане да помолим новите потребители да включат своята раса и етническа принадлежност при регистрация в уебсайта. Така че добавих подходящите въпроси към страницата... засега добре.

Проблемът, който получавам сега, е, че когато изпратя страницата, новите стойности изглежда не се актуализират. Ще публикувам тук кода за расовия въпрос, но въпросът за етническата принадлежност е почти идентичен. Може да е важно да се отбележи, че потребителят трябва да може да избере повече от едно състезание или изобщо да не избира състезания, когато се регистрира.

Моята подходяща надценка:

<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