В Wicket DropDownChoice, как вы можете заменить «Выбрать один» на другой текст - PullRequest
9 голосов
/ 09 января 2012

У меня есть 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();
        }
    });

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

Ответы [ 5 ]

9 голосов
/ 19 июля 2013

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

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

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

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

6 голосов
/ 20 июня 2014

Я использую калитку 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();
    }
});
6 голосов
/ 10 января 2012
  1. Установите идентификатор разметки для вашего DropDownChoice .: terms.setMarkupId("termsDDC");

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

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

Ссылка: https://cwiki.apache.org/WICKET/dropdownchoice.html

0 голосов
/ 02 мая 2017

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

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

0 голосов
/ 16 февраля 2017

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

AbstractSingleSelectChoice # getNullKeyDisplayValue (), AbstractSingleSelectChoice # getNullValidDisplayValue ()

, доступ к которым осуществляется через DropDownChoice

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

и если DropDownChoice имеет setNullValid (true), метод:

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