Jelly Config Expand Elements

У меня есть быстрый вопрос. В jenkins при создании файла конфигурации jelly для графического интерфейса вы можете установить переключатель и показать больше элементов, можно ли это сделать с помощью выпадающего списка? Если да, у кого-нибудь есть пример, пожалуйста? Я знаю, как это сделать с помощью радиокнопок, но мне не нужны радиокнопки, мне нужно, чтобы контент зависел от выбора.

Изменить: В настоящее время у меня есть следующее:

   <f:entry title="${%Authentication}" field="authMode">
        <f:select />
    </f:entry>

и в файле Java:

    public ListBoxModel doFillAuthModeItems() {
        ListBoxModel items = new ListBoxModel();
        items.add("None");
        items.add("Form Based Authentication");
        items.add("Script Based Authentication");
        return items;
        }

Это создает выпадающий список из 3 элементов, мне просто нужно показать другой контент, например, на основе выбора. Ни один из них не будет иметь нового контента, на основе формы будет отображаться имя пользователя и текстовое поле пароля.

1 ответ

То, что вам нужно исследовать, это желейный тег гетеро-списка. На ней есть хорошая страница от облачных пчел, хотя их код закрыт

Я положил один с открытым исходным кодом для плагина оси селена, но это в отличной форме и использует отличные формы

namespace(lib.FormTagLib).with {
    entry(title: _("Name"), field:"name") {
        textbox( default:"label")
    }
    block{
        entry(field:"seleniumCapabilities") {
            hetero_list( name: "seleniumCapabilities",
                      hasHeader: true,
                      descriptors:descriptor.axisItemTypes(),
                      items:      instance? 
                           instance.getSeleniumCapabilities():
                           descriptor.loadDefaultItems())
        }
    }
}

источник

Как это работает, так это то, что в дескрипторе верхнего уровня есть метод, который возвращает все дескрипторы, которые могут быть использованы

List<ItemDescriptor> axisItemTypes() {
    def ait = Jenkins.instance.<Item,ItemDescriptor>getDescriptorList(Item)

    def ret = []

    for (int i = 0; i < ait.size(); i++) {
        /*code removed*/
        ret.add(ait.get(i))
    }
    ret
}

источник

Все вложенные элементы должны иметь свои собственные дескрипторы, а также @DataBoundConstructor

Другие вопросы по тегам