使用Jira在速度模板中调用Java方法的问题

时间:2015-04-08 08:59:12

标签: java plugins call jira velocity

我正在为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工作正常。

为破碎的英语而烦恼。

3 个答案:

答案 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()方法。

You can have a look at this for reference: