2012-01-09 4 views
9

Ho un DropDownChoice come di seguito:Nel Wicket DropDownChoice come si può sostituire "Scegliere uno" per un altro testo

final DropDownChoice<Term> terms = new DropDownChoice("terms", new Model<Term>(), new Model(new ArrayList(termDao.findAll())), new IChoiceRenderer<Term>() { 
     public Object getDisplayValue(Term object) { 
      return object.getIdentifier(); 
     } 

     public String getIdValue(Term object, int index) { 
      return object.getId().toString(); 
     } 
    }); 

voglio avere "Scegliere All" al posto di "Scegli uno". Come lo posso fare?

+1

FYI è possibile aggiungerlo come risposta alla propria domanda e accettarlo per ottenerne il credito – schmimd04

risposta

6
  1. impostare un margine di profitto per il vostro id DropDownChoice .: terms.setMarkupId("termsDDC");

  2. Creare un file .properties per il modulo/pannello/pagina. Per esempio: mypanel.properties

  3. Nel file di proprietà di scrittura: termsDDC.null=Choose All

Rif: https://cwiki.apache.org/WICKET/dropdownchoice.html

8

Ho provato il suggerimento di Goli sotto wicket 6.4 e non funziona. Per me il modo giusto è:

  1. Non è necessario impostare terms.setMarkupId ("termsDDC"); Funzionerà senza di esso

  2. Esattamente come sopra, se si ha un modulo sul pannello (wicket: id = "form") e un DropDownChoice sul modulo (wicket: id = "terms"), non lo fa t materia, si dovrebbe nominare .properties file come mypanel.properties

  3. Nel file di scrittura di proprietà: form.terms.null = Scegli Tutti o form.terms.nullValid = vuoto, se la discesa è setNullValid (vero)

+0

Questa è la soluzione corretta. –

6

sto usando wicket 6.14 (non sono sicuro quale versione è stato introdotto) e si può solo ignorare getNullKeyDisplayValue(), quindi si avrebbe questo:

final DropDownChoice<Term> terms = new DropDownChoice("terms", new Model<Term>(), new Model(new ArrayList(termDao.findAll())), new IChoiceRenderer<Term>() { 
    @Override 
    protected String getNullKeyDisplayValue() { 
     return "Choose All"; 
    } 

    public Object getDisplayValue(Term object) { 
     return object.getIdentifier(); 
    } 

    public String getIdValue(Term object, int index) { 
     return object.getId().toString(); 
    } 
}); 
+0

Ho modificato per rendere più chiara la risposta – Andy

0

ho usato i due metodi:

AbstractSingleSelectChoice # getNullKeyDisplayValue(), AbstractSingleSelectChoice # getNullValidDisplayValue()

che sono entrambi accede attraverso DropDownChoice

@Override 
protected String getNullKeyDisplayValue() { 
    return "Choose All"; 
} 

e se il DropDownChoice ha aveva setNullValid (true) il metodo:

 @Override 
    protected String getNullValidDisplayValue() { 
     return "Choose All"; 
    } 
0

Nelle versioni più vecchie Wicket (forse funziona anche nelle versioni più recenti) è possibile effettuare le seguenti operazioni (testato in Wicket 1.3.7):

Dropdownchoice dropdown = new DropDownChoice("dropdown", list) 
{ 
    @Override 
    protected CharSequence getDefaultChoice(Object selected) 
    { 
     return "<option value=\"\">" + "MY placeholder text" + "</option>"; 
    } 
}; 
dropdown.setNullValid(true); 

Forse si desidera aggiungere materiale aggiuntivo per l'opzione-tag in funzione sull'oggetto "selezionato". Dai un'occhiata al metodo super.getDefaultChoice (Oggetto selezionato) per l'implementazione predefinita.