Jira 服务器 7.2.1。自定义字段插件。
问题跟在这个讨论 后面 看不懂,getSingularObjectFromString 方法是做什么的? 以及来自“实用 jira 插件”的一些信息
我正在尝试使用基本的 value-displayValue 逻辑实现数据库自定义字段。该字段表示一个外部实体,因此我将 ID 存储为该字段的值,但显示 NAME。我有两个 .vm 模板:编辑和查看。我正在尝试选择将 ID 转换为 NAME 的正确位置。我已经重写了getStringFromSingularObject(Object o)
从 ID 获取 NAME 的方法。它在edit.vm 中工作得非常好。作为$value
变量,我得到了确切的名称,但在 view.vm 中,我仍然得到一个 id 作为$value
. 我已经记录了方法的方法调用AbstractSingleFieldType
并注意到
当包含我的字段的页面被呈现时:方法
getValueFromIssue, getDatabaseType, getObjectFromDbValue
被调用 4 次(按此顺序 4 个周期)。所以他们绝对不是查询的地方。当该字段以编辑模式呈现时(因此处理了edit.vm)(即创建屏幕或编辑屏幕,:相同的方法被调用4次,然后
getStringFromSingularObject
被getStringValueFromCustomFieldParams
调用,它们返回我想要的名称。当我只是刷新视图问题屏幕时:
getStringFromSingularObject
根本没有调用该方法 -我的问题的根源。当前在查看问题屏幕中,我看到的是 ID 而不是名称,但是当我单击铅笔(编辑)时,我看到了正确的值(名称)。此外,在这种情况下,不会调用任何方法。所以我猜 Jira 会事先处理这两个模板?
编辑.vm
<div class="field-group">
<label for="cFieldId">
$customField.name $value
#if($fieldLayoutItem.required)
<span class="aui-icon icon-required">Required</span>
#end
</label>
<select class="select cf-select" name="$customField.id" id="$customField.id">
<option value="">None</option>
#foreach ($id in $items.keySet())
#if ($value && $value.equals($items.get($id)))
<option value="$id" selected="selected">$items.get($id)</option>
#else
<option value="$id">$items.get($id)</option>
#end
#end
</select>
</div>
视图.vm
<div id="$customField.id-val" class="value type-select" data-fieldtype="select" data-fieldtypecompletekey="com.atlassian.jira.plugin.system.customfieldtypes:select">
$value
</div>
再次,edit.vm 工作正常,将名称显示为值并将名称显示为选项。view.vm 工作错误,显示 id。所以,问题是:
- 为什么这种负责显示值的方法不会在视图上被调用?
$value
真正为 view.vm 设置的地方- 为了我的目的,我还有什么其他选择