Scriptrunner behaviours - setFormValue(optionId) not working

Sandra Priedīte August 5, 2020

My goal is to to fill in field with value that is in the Epic, once Epic link field is filled in task.

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.customfields.option.Option

def epicLinkCf = getFieldById(getFieldChanged()) //Epic Link field
def inputCategoryCF = getFieldById("customfield_11300")  //Field that must be filled

def epicLinkValue = epicLinkCf.getValue().toString()
def epicKey = epicLinkValue.replace("key:","")

def issueManager = ComponentAccessor.getIssueManager()
def optionsManager = ComponentAccessor.getOptionsManager()
def epic = issueManager.getIssueObject(epicKey)


def customFieldManager = ComponentAccessor.getCustomFieldManager()
def inputCategoryField = customFieldManager.getCustomFieldObject(11300L)



def inputCategoryConfig = inputCategoryField.getRelevantConfig(getIssueContext())

def options = optionsManager.getOptions(inputCategoryConfig)
def inputCategoryValue = epic.getCustomFieldValue(inputCategoryField).toString()
def optionToSelect = options.find { it.value == inputCategoryValue}

inputCategoryCF.setFormValue(optionToSelect.optionId)

This is not working.

I tested, by adding error on the screen by replacing:

inputCategoryCF.setFormValue(optionToSelect.optionId) with

inputCategoryCF.setError(optionToSelect.optionId.toString())

and I can see, that correct option Id is shown.

I don't understand, why setFormValue is not working.

1 answer

0 votes
Michael Kornatzki
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
April 4, 2024

Hi Sandra,

did you find the reason?

I am having the same problem. In other scripts i use 

setFormValue(optionToSelect.optionId)

and it works. Now with a new script the option get not set :(

I have the right field, i set the helptext.

Kind regards
Michael 

Sandra Priedīte April 7, 2024

Hello,

 

I checked my code as it was long time ago. Here is a code, that is working.

You need to get customfield value of epic - convert toString() and then set that value

 

    def inputCategoryValue

    if(inputCategoryField != null && epic != null){

        inputCategoryValue = epic.getCustomFieldValue(inputCategoryField).toString()

        def countryProductValueNew = epic.getCustomFieldValue(newCountryField).toString()

        List<Option> productsValue = (List) epic.getCustomFieldValue(productsField)

        inputCategoryCF.setFormValue(inputCategoryValue)

        countryCF.setFormValue(countryProductValueNew)

        productsCF.setFormValue(productsValue*.optionId)

    }
   
Michael Kornatzki
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
April 9, 2024

Thank you Sandra,

i tried a lot and at final i guess i found possibly a bug.

I have defined a context (only one project) on the field. If i remove the context setFormValue works :)

But sadly i can not set components in this way :(
Neither with the displayString nor with the componentId

 

Suggest an answer

Log in or Sign up to answer
DEPLOYMENT TYPE
SERVER
TAGS
AUG Leaders

Atlassian Community Events