I have created my own custom field type (using this tutorial) which is a read-only calculated field and which I want to display on a JIRA transition screen.
It works as expected except that if the validation fails on the transition (in this case a checkbox is unchecked) then when the transition screen re-renders with the error, my custom field has disappeared.
Clues:
ca.mrc.plugin.jira.customfield.AbstractCustomField.getValueFromIssue(AbstractCustomField.java:44)
com.atlassian.jira.issue.fields.ImmutableCustomField.getCustomFieldParamsFromIssue(ImmutableCustomField.java:1238)
com.atlassian.jira.issue.fields.ImmutableCustomField.populateFromIssue(ImmutableCustomField.java:595)
com.atlassian.jira.issue.fields.screen.FieldScreenRenderLayoutItemImpl.populateFromIssue(FieldScreenRenderLayoutItemImpl.java:80)
com.atlassian.jira.web.action.issue.CommentAssignIssue.doDefault(CommentAssignIssue.java:90)
...
ca.mrc.plugin.jira.customfield.AbstractCustomField.getValueFromIssue(AbstractCustomField.java:44)
com.atlassian.jira.issue.fields.ImmutableCustomField.getValue(ImmutableCustomField.java:350)
com.atlassian.jira.issue.IssueImpl.getCustomFieldValue(IssueImpl.java:896)
com.atlassian.jira.issue.IssueImpl.setCustomFieldValue(IssueImpl.java:906)
com.atlassian.jira.issue.fields.ImmutableCustomField.updateIssue(ImmutableCustomField.java:1039)
com.atlassian.jira.bc.issue.DefaultIssueService.updateIssueFromFieldsWithScreenCheck(DefaultIssueService.java:819)
com.atlassian.jira.bc.issue.DefaultIssueService.updateIssueFromFields(DefaultIssueService.java:801)
com.atlassian.jira.bc.issue.DefaultIssueService.validateAndUpdateIssueFromFields(DefaultIssueService.java:684)
com.atlassian.jira.bc.issue.DefaultIssueService.validateTransition(DefaultIssueService.java:459)
com.atlassian.jira.bc.issue.DefaultIssueService.validateTransition(DefaultIssueService.java:417)
com.atlassian.jira.web.action.issue.CommentAssignIssue.doValidation(CommentAssignIssue.java:149)
...
So somehow CommentAssignIssue.doDefault() is querying my custom field and making it available to the Velocity template, but CommentAssignIssue.doValidation() is querying the field but not making it available to the Velocity template...?
(Using JIRA Core 7.3.6.)
Andrew