Я создаю функцию публикации рабочего процесса в плагине 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, ключ которой начинается с общей строки. Это действительно пахнет для меня!