2
1
0

下記のコードをScriptRunner の Behavioursで設定してして、
「customfield_10000」のフィールドが空欄の場合に
エラーを出したいと思っています。
しかし、「customfield_10000」のフィールドに値が入力されている状態でも、
「"入力情報はありません"」というメッセージが表示されてしまいます。

何かやり方が間違っているのでしょうか。
どなたかご教示ください。


def targetField = getFieldById("customfield_10000");
def targetFieldValue = targetField.getValue();

if (targetFieldValue == null) {
targetField.setError("入力情報はありません")
}

    Commentコメントを追加...

    1 回答

    1.  
      1
      0
      -1
      恐らくですが、フィールドに値が入力されている状態ではエラーを解除する必要があるので
      clearError が足りてないだけなのかと思います。
      以下の通りではでどうでしょうか?
      def targetField = getFieldById("customfield_10000"); 
      def targetFieldValue = targetField.getValue();
      if (targetFieldValue == null) {
      targetField.setError("入力情報はありません")
      } else {
      targetField.clearError();
      }

      参考QA

      1. 釜谷 宙

        ご回答ありがとうございます。

        ご提示いただいた内容でスクリプトを修正しましたが、

        状況は改善されませんでした。

         

        確かに該当フィールドに値は入っているのに、

        そのフィールドの下に「入力情報はありません」と表示されてしまいます。

      2. 釜谷 宙
        参考QAを参考にして、
        targetField.getValue() を (String)targetField.getValue()

        に変更したら値を拾えるようになりました。

         

        ご回答ありがとうございました。

      3. Kengo Ohsaki

        Initialiser Function に設定していませんでしょうか?

        Initialiser Function はフォームが表示された初回にしか動作しないスクリプトなので
        今回のような値チェックする場合は
        対象Fieldを追加して、そのFieldの Validation Script に以下スクリプトを設定すれば期待する挙動が確認できました。
        def targetField = getFieldById("customfield_10000"); 
        def targetFieldValue = targetField.getValue();
        if (targetFieldValue == null || ((String)targetFieldValue).isEmpty()) {
         targetField.setError("入力情報はありません")
        } else {
         targetField.clearError();
        }
      4. Kengo Ohsaki

        釜谷 宙-san,

        申し訳ございません…ページを更新せずコメント投稿してしまいました。

        参考QAが参考になりよかったです。

      Commentコメントを追加...