Validate multi select field during transition in Jira using Custom script validator

hemanth acharya January 22, 2015

Hi All,

I have the following code snippet to validate the custom multi select field. I am using the below code in 'Custom script Validator' during the workflow transition.

 

import com.atlassian.jira.ComponentManager;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.IssueManager;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.MutableIssue;
import com.opensymphony.workflow.InvalidInputException

CustomFieldManager customFieldManager = ComponentManager.getInstance().getCustomFieldManager(); 
def textfield = customFieldManager.getCustomFieldObjects(issue).find {it.name == 'Text field 2'}
custom = customFieldManager.getCustomFieldObjectByName("Test multi")
List<Option> options = (List<Option>) custom.getValue(issue)
for (int i = 0; i < options.size(); i++){
options[i]
}

if ( !issue.getCustomFieldValue(textfield))
{
invalidInputException = new InvalidInputException("Test field 2 is required")
throw invalidInputException
}

 

I am not able to get the values in the multi select. I actually need to check for two values in the multi select. What I am doing wrong?

 

Thanks, Hemanth

1 answer

1 accepted

2 votes
Answer accepted
Cesare Jacopo Corzani
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.
January 29, 2015

Hi Hemanth
I would suggest something like that:

def targetVersionField = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Test multi");
def options = issue.getCustomFieldValue(targetVersionField) as List<Option>

def requiredOptions = ['Option 1','Option 4']

if (! ( options*.value.containsAll(requiredOptions) )){
        throw new InvalidInputException("Field '${targetVersionField.getName()}'  requires the following options: $requiredOptions")
}

 

where 'Option 1' and 'Option 4' are the required options

Suggest an answer

Log in or Sign up to answer