Tapestry: значение по умолчанию для раскрывающегося списка

Я использую следующий код для select-component:

Java-класс:

@Component(parameters = {"blankOption=AUTO", "model=someModel", "value=someId",
                         "zone=someZone"})
private Select demoSelect;

Шаблон:

<select t:id="demoSelect" />

Это преобразуется во что-то вроде следующего:

<select id="demoSelect" name="demoSelect">
    <option value=""></option>
    <option value="1">first</option>
    <option value="2">second</option>
    <option value="3">third</option>
</select>

Поведение, которое я ищу, заключается в том, что определенная опция предварительно выбрана (это должно быть решено в классе страницы). Как я могу настроить это в Tapestry? В основном мне нужно сказать Tapestry, чтобы отобразить «выбранный» для соответствующей опции, например:

<select id="demoSelect" name="demoSelect">
    <option value=""></option>
    <option value="1">first</option>
    <option value="2" selected="selected">second</option>
    <option value="3">third</option>
</select>

Достаточно ли изменить модель (я так не думаю), или мне нужно расширить сам Select-компонент. Я нашел эту статью, которая выглядела многообещающе, но, к сожалению, все ссылки на исходные коды мертвы. .


person martin    schedule 21.07.2011    source источник


Ответы (2)


Ничего продлевать не нужно. Просто установите для свойства значение до того, как рендеринг сделает свое дело:

@Property
private SomeType someId;

@SetupRender
void initSomeId() {
    if (this.someId == null) {
       this.someId = this.getDefaultValueForSomeId();
    }
}
person Henning    schedule 21.07.2011
comment
Спасибо, я просто пропустил этот простой способ. - person martin; 21.07.2011

Еще один простой способ исправить это, если вы хотите, чтобы по умолчанию автоматически использовался первый вариант, вы можете изменить blankOption="AUTO" на blankOption="NEVER".

Это удалит иногда ненужное начальное пустое пространство (функция гобелена) в раскрывающемся списке. Полезно сделать так, чтобы пользователь не мог просто оставить выбор пустым и освободить обработку исключений.

person Joey    schedule 01.09.2015