JIRA Behaviours选择问题类型时即时设自定义字段必填的脚本修正
问题原因
原有脚本无法实时生效的核心问题是getIssueContext().getIssueType()读取的是页面初始加载或工单已持久化存储的问题类型值,没有监听问题类型下拉框的实时选择变更,切换选项时脚本不会自动执行,因此只有提交更新后字段状态才会刷新。
修正代码
以下脚本可实现切换问题类型后实时更新字段状态,无需提交即显示必填红星,支持同时配置多个自定义字段:
// 声明需要控制的自定义字段,多个字段直接在列表内追加即可 def targetCustomFields = [ getFieldById("customfield_17914"), // 第二个自定义字段参考下方格式添加 // getFieldById("customfield_你的第二个字段ID") ] // 获取问题类型表单字段,读取实时选择值 def issueTypeSelect = getFieldById("issuetype") // 提取当前选中的问题类型名称/ID,不要使用上下文缓存的旧值 String selectedIssueTypeName = issueTypeSelect.value?.name // 批量处理目标字段状态 targetCustomFields.each { field -> if (selectedIssueTypeName == "Epic") { field.setHidden(false) field.setRequired(true) } else { // 非Epic场景下重置字段状态,避免逻辑残留 field.setRequired(false) // 若非Epic场景不需要隐藏字段,可删除下一行 field.setHidden(true) } }
配置要点
- 在Behaviours的触发字段配置中,必须同时勾选*问题类型(Issue Type)*字段,仅绑定自定义字段时,切换问题类型不会触发脚本执行
- 若你的JIRA是多语言环境,建议使用问题类型ID代替名称做匹配判断,避免多语言翻译导致匹配失效,示例判断逻辑:
if (issueTypeSelect.value?.id == "10000")(可在问题类型管理页面查看对应类型的ID) - 若非Epic场景下自定义字段需要保持显示,直接删除代码中
field.setHidden(true)行即可
内容的提问来源于stack exchange,提问作者Drish
相关产品推荐
相关产品推荐

