请允许我在前言中说我对java web开发非常陌生,所以我希望我能正确解释这个问题。
我从一位已离开绿色牧场的人那里继承了一个检票口网站,并要求新用户在网站注册时加入他们的种族和多样性。所以我已经在网页上添加了相应的问题......到目前为止一直很好。
我现在遇到的问题是,当我提交页面时,新值似乎没有得到更新。 我将在这里发布代码以解决种族问题,但种族问题几乎完全相同。重要的是要注意,当注册发生时,用户应该能够选择多个种族或根本没有种族。
我的相关加价:
<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;
}
}
最后,我的用户类中我的races属性的相关代码:
private ArrayList<RaceAnswer> race;
public ArrayList<RaceAnswer> getRaces()
{
return race;
}
public void setRaces(ArrayList<RaceAnswer> races)
{
race = races;
}
答案 0 :(得分:1)
我终于修好了。 有几个问题......
首先,我应该使用Check而不是CheckBox。 这个变化暴露了这样一个事实,即我的集合从我的模型中返回为null,而不仅仅是我期待的空集(但是实例化的集合)。
现在好了!
答案 1 :(得分:0)
我讨厌要求更多代码,因为您已经发布了相当多的代码,但最常见的是模型如何附加到表单上,而且表单本身不在您发布的代码中,因此发布更多的表单代码可能有助于诊断。
与此同时,您可能已经看到它可以实现这一目标,但是在wicketstuff 1.3 examples或wicketstuff 1.4 examples的示例中可能有用的表格中有一个简单的CheckGroup用法示例。