Ich habe eine einzige Einstellung, die ich an mehreren Orten verwenden möchte. Ich muss einen ganzzahligen Wert erhalten und setzen: 0, 1, 2, -1. Die angezeigte Zeichenfolge wird nicht gespeichert.Wicket - wie SelectOption mit DropDownChoice verwenden?
Fragment des html:
<select wicket:id="thingPref">
<option>1</option>
<option>2</option>
</select>
Fragment des 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);
}
Developer Tools zeigt html wie diese
<option value="3">[SelectOption [Component id = -1]]</option>
wenn ich
<option value="-1">All Things</option>
brauchen die Lösung nicht so einfach zu sein, sieht wie ein Renderer Hinzufügen und ich bin nicht sicher, dass die Einstellung sollte eine Aufzählung verwenden. Ich benutze Wicket 7.6. Irgendwelche Ideen?