因此,我有以下代码(重要部分):
import java.lang.String;
//More imports ...
String errorString = ""
//More global variables
def mainMethod(){
if (errorString.length()) {
errorString += "BTW, fields with errors must be either corrected or set back to their original value before proceeding."
invalidInputException = new InvalidInputException(errorString);
}
}
然后,当我运行脚本时,Jira在
catalina.out
中向我抛出以下错误消息:groovy.lang.MissingPropertyException: No such property: errorString for class: com.onresolve.jira.groovy.canned.workflow.validators.editAssigneeValidation
因此,我不确定为什么脚本无法将errorString识别为变量。
最佳答案
因为您正在使用此代码作为脚本。编译后,所有未包含在方法中的代码将放入run()
方法中,因此,您的errorString
将在run()
方法中声明,而您的mainMethod()
将尝试使用errorString
既不存在于自己的范围内,也不存在于类的范围内。
一些解决方案:
1. @Field
添加@Field
将errorString
转换为已编译脚本类中的字段
@groovy.transform.Field String errorString = ""
def mainMethod(){
if (errorString.length()) {
errorString += "BTW, fields with errors must be either corrected or set back to their original value before proceeding."
invalidInputException = [error: errorString]
}
}
mainMethod()
2.绑定
删除类型声明,因此
errorString
将包含在脚本的绑定中:errorString = ""
def mainMethod(){
if (errorString.length()) {
errorString += "BTW, fields with errors must be either corrected or set back to their original value before proceeding."
invalidInputException = [error: errorString]
}
}
mainMethod()
这是脚本的groovyConsole输出: