Невозможно извлечь список из шаблона Velocity - PullRequest
0 голосов
/ 02 ноября 2018

Я создаю функцию публикации рабочего процесса в плагине JIRA, но у меня проблемы с шаблонами скорости.

У меня есть шаблон Velocity, который пытается разрешить пользователям выбирать несколько категорий проектов JIRA;

<table cellpadding="2" cellspacing="2">
    #foreach ($projectCategory in $projectCategories)
        <tr>
            <td><input type="checkbox" name="projectCategories" value="$projectCategory.getId()"
                #if (${selectedProjectCategories})
                    #if (${selectedProjectCategories.contains($projectCategory.getId())})
                       CHECKED
                    #end
                #end
            ></td>
            <td>#displayConstantIcon ($projectCategory) $projectCategory.getName()</td>
        </tr>
    #end
</table>

Используя одно и то же свойство "name" для каждого флажка, я могу получить доступ ко всем выбранным идентификаторам из параметров;

public Map<String, Object> getDescriptorParams(Map params) {

    if (params != null && params.containsKey("projectCategories")){
        return MapBuilder.build( "projectCategories", params.get("projectCategories"));
    }

    return MapBuilder.build( "projectCategories", new ArrayList<String>());
}

Однако, когда я затем извлекаю их через «FunctionDescriptor», ArrayList теперь является строкой, и я не могу получить доступ к исходным значениям;

functionDescriptor.getArgs().get("projectCategories")

Есть идеи, что я делаю не так? Чтобы обойти это, мне пришлось использовать уникальные свойства «name» с префиксом общей строки, а затем извлечь каждую запись в params, ключ которой начинается с общей строки. Это действительно пахнет для меня!

...