我正在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>
通过为每个复选框使用相同的“名称”属性,我可以从参数中访问所有选定的ID;
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")
有什么主意我做错了吗?为了解决这个问题,我不得不使用以公共字符串作为前缀的唯一“名称”属性,然后提取参数中具有以公共字符串开头的键的每个条目。这真让我闻起来!