Get cascade field value

Naman Mandli November 14, 2018

I have a behaviours script and following requirement:

If user select values of cascade field as "Peter" (first option) and "New York" (Second option) then I can see the hidden field.

Can someone please help me?

def tid = getFieldByName("Name and Location");

def monthlyMaintenance = getFieldByName("Is this for monthly network maintenance");

monthlyMaintenance.setHidden(true);

if(tid.getValue() == "'Peter','New York'"){
             monthlyMaintenance.setHidden(false);
}

2 answers

1 accepted

3 votes
Answer accepted
devsuresh2005 May 4, 2021

Hi All,

Following code has worked for me but ensure the cascading custom field is available in the screen you are working on,

For Behaviour:

def cfield = getFieldByName("cascading custom field name")
Map mapValue = cfield.getValue() as Map
def value1 = mapValue.get(0).toString()
def value2 = mapValue.get(0).toString()

For Post Functions:

import com.atlassian.jira.component.ComponentAccessor

def issueManager = ComponentAccessor.getIssueManager()

def customFieldManager = ComponentAccessor.getCustomFieldManager()
def customField = customFieldManager.getCustomFieldObjectsByName('cascading custom field name').getAt(0)
def cstFldVlue = issue.getCustomFieldValue(customField)

Thanks

Laurent Bierge
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.
May 5, 2021

Works for me !

thanks !

Like devsuresh2005 likes this
devsuresh2005 May 13, 2021

Please accept the answer. Thanks.

Darin Hafer September 7, 2021

Hi @devsuresh2005 - I tried your solution and it was slightly incorrect.

value2 should use 'get(1)' instead of 'get(0)'  ;-)

Jeff Patterson February 8, 2023

Yay, thanks @devsuresh2005 for this - tried several other posted solutions that didn't seem to work, this one's doing it!

0 votes
Payne
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.
November 14, 2018

I use the following in a ScriptRunner post function. I'm not sure if it'll work in a Behaviour, but maybe it'll at least get you headed in the right direction.

 

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.fields.CustomField

String unit,category,emailDestination

CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager()
CustomField cf = customFieldManager.getCustomFieldObjectByName("Unit and Category")
Map cfVal = issue.getCustomFieldValue(cf) as Map

if (cfVal) {
String first = cfVal.get(null)
String second = cfVal.get("1")
unit = first
category = second
}
else {
unit = ""
category = ""
}
Laurent Bierge
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.
May 7, 2020

Hi Payne,

I can't get it to work :/

I saw a lot of post like yours that cast 

issue.getCustomFieldValue(cf)

To Map or Hashmap or ....

But  in my case, I don't know why I can't do it. The compiler cast automatically my issue.getCustomFieldValue(cf) to Double and it can't overwrite this cast.

I can't understand why, but my field value is always 0.0 (with or without value in the field)

When i put this in my code :

Map cfVal = issue.getCustomFieldValue(cf) as Map

I have this error :

org.codehaus.groovy.runtime.metaclass.MissingMethodExceptionNoStack: No signature of method: java.lang.Double.isEmpty() is applicable for argument types: () values: [] Possible solutions: identity(groovy.lang.Closure), isNaN(), inspect(), dump()

 When i try another thing i saw in a different post (but similar) :

log.warn(((Map<String, String>) issue.getCustomFieldValue(cf)).get(null))

I have this error :

Cannot cast object '0.0' with class 'java.lang.Double' to class 'java.util.Map'

 As I was saying, even if it display an error in the "pre-compiling" I can run this code well :

log.warn issue.getCustomFieldValue(cf).floatValue()

and I have this result :

[runner.ScriptBindingsManager]: 0.0

 Do you have any idea that could make 

Map cfVal = issue.getCustomFieldValue(cf) as Map

works ?

Regards,

Laurent

Suggest an answer

Log in or Sign up to answer