I need to make some fields mandatory on selection of a particular value in a dropdown . It needs to be
triggered in the validation script of a workflow in the create transition.
Please let me know if the below is correct . I attached the same in the script but nothing happens
import com.googlecode.jsu.util.WorkflowUtils import com.opensymphony.workflow.InvalidInputException import org.apache.log4j.Category log = Category.getInstance("com.onresolve.jira.groovy.OneOrOther") log.debug("In Validator groovy script") String sponsor = (String) WorkflowUtils.getFieldValueFromIssue(issue, WorkflowUtils.getFieldFromKey("customfield_10170")) ?: "" String desc = (String) WorkflowUtils.getFieldValueFromIssue(issue, WorkflowUtils.getFieldFromKey("description")) ?: "" if (! (sponsor == "" ^ desc == "")) { invalidInputException = new InvalidInputException("Must enter either a Sponsor OR a description") }
The code you've posted is from the behaviour plugin, and is mostly wrong (no offence) because it uses APIs to get the value of the fields from db, and ignores what's on the form.
I'd take Henning's advice, but modify slightly:
(cfValues['Sponsor'] as boolean) ^ (issue.description as boolean)
Bitwise xor doesn't like nulls.
Not this is from script runner... workflow -> validators -> script validator -> simple scripted validator.
IMO you could use a Simple scripted validator with following codition
cfValues['Sponsor'] ^ issue.description
and the text of the exception as error message. Maybe because of the bitwise xor you need the =="", but I'm not sure.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.