Ich bin mir nicht sicher, ob Sie Martin Punkt haben. Ich werde eine einfache Lösung geben, die Ihr Problem lösen wird. nehmen wir an, Sie SelectionOption
Klasse, die Sie key
und value
public class SelectOption {
private String key;
private String value;
public SelectOption(String key, String value) {
this.key = key;
this.value = value;
}
// getter and setter
}
Erstellen Sie eine einfache Liste wählen Sie Optionen und gehen auf die dropdownchoice
List<SelectOption> selectOptions = new ArrayList<>();
selectOptions.add(new SelectOption("-1","ALL"));
selectOptions.add(new SelectOption("1","Not Started"));
selectOptions.add(new SelectOption("2","In Progress"));
selectOptions.add(new SelectOption("3","Completed"));
// Simply override
choiceRender Option show
Schlüssel und value
haben. Ich habe getDefaultChoice
außer Kraft gesetzt, um eins zu entfernen (Sein mein bequemes) seit Sie bereits entfernten.
add(new DropDownChoice("selectOption", selectOptions,new ChoiceRenderer<SelectOption>("value","key"){
@Override
public Object getDisplayValue(SelectOption object) {
return object.getValue();
}
@Override
public String getIdValue(SelectOption object, int index) {
return object.getKey();
}
}){
@Override
protected CharSequence getDefaultChoice(String selectedValue) {
return "";
}
});
Ausgang:
<select wicket:id="selectOption" name="selectOption">
<option value="-1">ALL</option>
<option value="1">Not Started</option>
<option value="2">In Progress</option>
<option value="3">Completed</option>
</select>
Arbeitete wie ein Charme. Danke –
Auf diese Weise ist die Anzeige korrekt, aber nachdem das Formular abgeschickt wurde, wird der Wert im Dropdown nicht übernommen. Der Wert ist immer null. Das erste Modell scheint das Problem zu verursachen. –
Beim Übermittlungsvorgang muss etwas falsch sein. Wird für das ausgewählte Element ein geeigneter Wert angezeigt? –