2012-01-09 1 views
9

У меня есть DropDownChoice, как показано ниже:В калитке DropDownChoice, как вы можете заменить «Выберите один» на другой текст

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(); 
     } 
    }); 

Я хочу, чтобы «выбрать все» вместо «Выберите один». Как я могу это сделать?

+1

FYI Вы можете добавить это как ответ на свой вопрос и принять его, чтобы получить кредит на него – schmimd04

ответ

6
  1. Установить идентификатор разметки для DropDownChoice .: terms.setMarkupId("termsDDC");

  2. Создайте .properties файл для формы/панели/стр. Например: mypanel.properties

  3. В файле свойств записи: termsDDC.null=Choose All

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

8

Я попытался предложение Голи под калиткой 6.4 и он не работает. Для меня правильный путь:

  1. Нет необходимости устанавливать terms.setMarkupId ("termsDDC"); Он будет работать без него

  2. Точно так же, как указано выше, если у вас есть форма на панели (калитка: id = "form") и DropDownChoice в форме (wicket: id = "terms"), т дело, вы должны назвать .Properties файл как mypanel.properties

  3. В собственности записи файла: form.terms.null = выбрать все или form.terms.nullValid = Пусто, если выпадающий имеет setNullValid (истина)

+0

Это правильное решение. –

6

Я использую калитка 6,14 (не уверен, какая версия была введена), и вы можете просто переопределить getNullKeyDisplayValue(), так что вы бы это:

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

Я отредактировал, чтобы сделать ответ clearer – Andy

0

Я использовал два метода:

AbstractSingleSelectChoice # getNullKeyDisplayValue(), AbstractSingleSelectChoice # getNullValidDisplayValue()

которые оба доступны через DropDownChoice

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

и если DropDownChoice имеет был установленNullValid (true) метод:

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

В старых версиях Калитки (возможно, также работает в более новых версиях) вы можете сделать следующее (проверено в 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); 

Может быть, вы хотите добавить дополнительный материал к опции тега в зависимости на выбранном объекте. Взгляните на метод super.getDefaultChoice (Object selected) для реализации по умолчанию.