4

Jira サーバー 7.2.1。カスタム フィールド プラグイン。

この議論に続く質問 理解できません。メソッド getSingularObjectFromString は何をしますか? 「実用的なjiraプラグイン」からの情報

基本的な value-displayValue ロジックを使用してデータベース カスタム フィールドを実装しようとしています。フィールドは外部エンティティを表すため、フィールドの値として ID を格納していますが、NAME を表示しています。編集と表示の 2 つの .vm テンプレートがあります。ID を NAME に変換する適切な場所を選択しようとしています。getStringFromSingularObject(Object o)ID から NAME を取得するメソッドをオーバーライドしました。edit.vm では問題なく動作します。変数として$value正確な名前を取得しますが、view.vm では id を$value. メソッドのメソッド呼び出しをログに記録しAbstractSingleFieldTypeたところ、

  1. フィールドを含むページがレンダリングされるとき: メソッドgetValueFromIssue, getDatabaseType, getObjectFromDbValueはそれぞれ 4 回呼び出されます (この順序で 4 サイクル)。したがって、それらは間違いなくクエリの場所ではありません。

  2. フィールドが編集モードでレンダリングされるとき (つまり、edit.vm が処理されます) (つまり、画面の作成または画面の編集: 同じメソッドが 4 回呼び出されてgetStringFromSingularObjectから呼び出され、必要なgetStringValueFromCustomFieldParams名前が返されます。

  3. ビューの問題画面を単に更新すると、メソッドgetStringFromSingularObjectがまったく呼び出されません-問題の原因です。

  4. 現在、課題の表示画面に名前ではなく ID が表示されていますが、鉛筆 (編集) をクリックすると正しい値 (名前) が表示されます。さらに、その場合、どのメソッドも呼び出されません。では、Jira は両方のテンプレートを事前に処理していると思いますか?

edit.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 は正常に動作し、name を値として、names をオプションとして表示します。view.vm が正しく動作せず、id が表示されます。したがって、質問は次のとおりです。

  1. 値の表示を担当するメソッドがビューで呼び出されないのはなぜですか?
  2. $valueview.vm に対して実際に設定されている場所
  3. 私の目的のために他にどのようなオプションがありますか
4

0 に答える 0