我正在为jira开发一个包含自定义字段类型的插件。 该字段是一个选择,必须填写选项。我通过Jira方法getVelocityParameters()提供这些选项。
@Override
public Map<String, Object> getVelocityParameters(Issue issue,
CustomField field, FieldLayoutItem fieldLayoutItem) {
Map<String, Object> map = super.getVelocityParameters(issue, field, fieldLayoutItem);
map.put("customOptions", getCustomOptions());
return map;
}
getCustomOptions()返回带有我需要的选项的Hashtable。
要访问和显示这些选项,我在模板中使用了#foreach循环:
#foreach($customOption in $customOptions)
<option id="$customOption.Id" value="$customOption.Value">
$customOption.Label
</option>
#end
不是显示返回的对象,而只是显示文本本身,而只显示“$ customOption.Id”。 只写“$ customOption”显示对象的整个引用。 所以我可以访问对象及其id,但不能访问其他属性。
Id是一个int,而label和value是Strings。
我搜索了解决方案并尝试了不同的方法来解决这个问题,例如: $!customOption.Label,$ {!customOption.Label},$ {customOption.Label},$ customOption.getLabel()
我在这里找不到问题,因为id工作正常。
为破碎的英语而烦恼。
答案 0 :(得分:0)
因为你使用Map。请尝试以下方法:
#foreach($customOption in $customOptions)
#if ($customOption)
#foreach ($co in $customOption.keySet())
$customOption[$co]
#end
#end
#end
答案 1 :(得分:0)
如果您的问题没有价值,Velocity将显示来源。
E.g。如果要获取自定义字段值,则应检查该值,如果未设置,则可以加载默认值或忽略它。
答案 2 :(得分:0)
我认为你应该研究一下这样一个事实:如果Velocity的类具有该字段的公共get方法,它将只显示一个字段值。
假设customOption是类X的对象,那么类X必须有一个返回标签的公共get()方法。
如果标签字段是X类的公共字段,则无需公共get()方法。