我有一个要在多个位置使用的设置。我需要获取并设置一个整数值:0、1、2、-1。不存储显示的字符串。
html片段:
<select wicket:id="thingPref">
<option>1</option>
<option>2</option>
</select>
Java 的片段。
import org.apache.wicket.extensions.markup.html.form.select.SelectOption;
import org.apache.wicket.markup.html.form.DropDownChoice;
private SelectOption thingPreference;
private void buildCommon()
{
thingPreference = new SelectOption(Integer.toString(setting()), new Model<String>("dummy"));
List<SelectOption> prefChoices = new ArrayList<SelectOption>();
prefChoices.add(new SelectOption<String>("0", new Model<String>("Current Thing")));
prefChoices.add(new SelectOption<String>("1", new Model<String>("One Prior Thing")));
prefChoices.add(new SelectOption<String>("2", new Model<String>("Two Prior Things")));
prefChoices.add(new SelectOption<String>("-1", new Model<String>("All Things")));
DropDownChoice<SelectOption> prefselect = new DropDownChoice<SelectOption>("thingPref",
new PropertyModel<SelectOption>(this, "thingPreference"), prefChoices)
{
private static final long serialVersionUID = 1L;
protected boolean wantOnSelectionChangedNotifications()
{
return true;
}
protected void onSelectionChanged(final String newSelection)
{
System.out.format("onSelectionChanged(%s)%n", newSelection);
}
};
prefselect.setNullValid(false);
prefselect.setRequired(true);
add(prefselect);
}
开发人员工具显示这样的 html
<option value="3">[SelectOption [Component id = -1]]</option>
当我需要的时候
<option value="-1">All Things</option>
该解决方案看起来不像添加渲染器那么简单,我不确定该设置是否应该使用枚举。我正在使用 Wicket 7.6。有任何想法吗?