2017-07-12 5 views
0

ich eine Wicket dropdownchoice Komponente erstellen müssen auf die Standard I Standard ersetzen kann „Bitte auswählen“ Text „All“ von SatzWie Wert einzustellen Wahl in Wicket DropDownChoice

nullValid=All 
null=All 

in seinen Eigenschaften-Datei. Ich möchte auch den Wert von "All" auf -1 setzen, konnte es aber nicht schaffen.

<select> 
<option selected="selected" value>All</option> 
<option value="1">Not Started</option> 
<option value="2">In Progress</option> 
<option value="3">Complete</option> 
</select> 

, was ich will, ist

<select> 
<option selected="selected" value="-1">All</option> 
<option value="1">Not Started</option> 
<option value="2">In Progress</option> 
<option value="3">Complete</option> 
</select> 

Antwort

1

Dazu Sie Setup die DropDownChoice zu nichtnull Wert erlauben und -1 auf Ihrer Liste der erlaubten/mögliche Werte hinzufügen. Schließlich müssen Sie es instanziieren mit: new DropDownChoice("compId", Model.of(-1), Arrays.asList(-1, 1, 2, 3), choiceRenderer), d. H. -1 sollte als das Standardmodellobjekt festgelegt werden, so dass es selected im Markup ist.

+0

Arbeitete wie ein Charme. Danke –

+0

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. –

+0

Beim Übermittlungsvorgang muss etwas falsch sein. Wird für das ausgewählte Element ein geeigneter Wert angezeigt? –

0

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> 
+0

Vielen Dank @soorapadman. –