Я подписан на https://developer.atlassian.com/server/jira/platform/creating-a-custom-mail-handler-for-jira/, чтобы создать плагин jira mail handler. Но я не могу получить параметры в классе EditDemoHandlerDetailsWebAction.java, который я добавляю в форму, когда пытаюсь создать новый обработчик почты. Но я могу получить параметры, когда пытаюсь редактировать уже существующий обработчик входящей почты, в это время я вижу параметры в методе copyServiceSettings.
Вот шаблон скорости для формы параметров
## couple of available navigation helpers
#set ($modifierKey = $action.browserUtils.getModifierKey())
#set ($submitAccessKey = $i18n.getText('AUI.form.submit.button.accesskey'))
#set ($submitTitle = $i18n.getText('AUI.form.submit.button.tooltip', [$submitAccessKey, $modifierKey]))
#set ($cancelAccessKey = $i18n.getText('AUI.form.cancel.link.accesskey'))
#set ($cancelTitle = $i18n.getText('AUI.form.cancel.link.tooltip', [$cancelAccessKey, $modifierKey]))
<html>
<head>
<title>$action.handlerName</title>
</head>
<body>
<form class="aui" action="EditDemoHandlerDetails.jspa" method="POST" name="mailHandlerForm" id="mailHandlerForm">
<div class="form-body">
<h2>$action.handlerName</h2>
<span class="global-errors-location">
#if ($action.getHasErrorMessages())
#foreach ($error in $action.getFlushedErrorMessages())
#AUImessage("error" "" $textutils.htmlEncode(${error}) "" "" "" "true")
#end
#end
</span>
<input type="hidden" name="atl_token" value="$atl_token">
<label>$i18n.getText('demohandler.project')<input type="text" class="text" id="issue-key" name="issueKey" value="$!textutils.htmlEncode($issueKey)"></label>
<label>$i18n.getText('demohandler.issueType')<input type="text" class="text" id="issueType" name="issueType" value="$!textutils.htmlEncode($issueType)"></label>
<div class="buttons-container form-footer">
<div class="buttons">
#if ($action.editing)
#set ($addButtonLabel = $i18n.getText('common.words.save'))
#else
#set ($addButtonLabel = $i18n.getText('common.forms.add'))
#end
<input id="addButton" type="submit" class="button" value="$!addButtonLabel" accesskey="$submitAccessKey" title="$submitTitle">
<a href="IncomingMailServers.jspa" class="cancel" accesskey="$cancelAccessKey" title="$cancelTitle">$i18n.getText("AUI.form.cancel.link.text")</a>
</div>
</div>
</div>
</form>
</body>
</html>
Вот мой класс EditDemoHandlerDetailsWebAction, где я не могу получить параметры из формы
package com.example.plugins.tutorial.jira.mailhandlerdemo;
import com.atlassian.configurable.ObjectConfigurationException;
import com.atlassian.jira.plugins.mail.webwork.AbstractEditHandlerDetailsWebAction;
import com.atlassian.jira.service.JiraServiceContainer;
import com.atlassian.jira.service.services.file.AbstractMessageHandlingService;
import com.atlassian.jira.service.util.ServiceUtils;
import com.atlassian.jira.util.collect.MapBuilder;
import com.atlassian.plugin.PluginAccessor;
import com.atlassian.plugin.spring.scanner.annotation.component.Scanned;
import com.atlassian.plugin.spring.scanner.annotation.imports.ComponentImport;
import com.example.plugins.tutorial.jira.mailhandlerdemo.parameter.ParameterKeys;
import java.util.Map;
@Scanned
public class EditDemoHandlerDetailsWebAction extends AbstractEditHandlerDetailsWebAction {
private ProjectIssueKeyValidator projectIssueKeyValidator;
private String project;
private String issueType;
public EditDemoHandlerDetailsWebAction(@ComponentImport PluginAccessor pluginAccessor, ProjectIssueKeyValidator issueKeyValidator) {
super(pluginAccessor);
this.projectIssueKeyValidator = issueKeyValidator;
}
@Override
protected void copyServiceSettings(JiraServiceContainer jiraServiceContainer) throws ObjectConfigurationException {
final String params = jiraServiceContainer.getProperty(AbstractMessageHandlingService.KEY_HANDLER_PARAMS);
final Map<String, String> parameterMap = ServiceUtils.getParameterMap(params);
project= parameterMap.get(ParameterKeys.PROJECT_KEY);
issueType = parameterMap.get(ParameterKeys.ISSUE_TYPE);
}
@Override
protected Map<String, String> getHandlerParams() {
return MapBuilder.build(ParameterKeys.PROJECT_KEY, project, ParameterKeys.ISSUE_TYPE, issueType);
}
@Override
protected void doValidation() {
if (configuration == null) {
return; // short-circuit in case we lost session, goes directly to doExecute which redirects user
}
super.doValidation();
projectIssueKeyValidator.validateProjectKey(project, new WebWorkErrorCollector());
projectIssueKeyValidator.validateIssue(issueType, new WebWorkErrorCollector());
}
}
Вот atlassian-plugin.xml
<atlassian-plugin key="${atlassian.plugin.key}" name="${project.name}" plugins-version="2">
<plugin-info>
<description>${project.description}</description>
<version>${project.version}</version>
<vendor name="${project.organization.name}" url="${project.organization.url}" />
<param name="plugin-icon">images/pluginIcon.png</param>
<param name="plugin-logo">images/pluginLogo.png</param>
</plugin-info>
<!-- add our i18n resource -->
<resource type="i18n" name="i18n" location="mail-handler-demo"/>
<!-- add our web resources -->
<web-resource key="mail-handler-demo-resources" name="mail-handler-demo Web Resources">
<dependency>com.atlassian.auiplugin:ajs</dependency>
<resource type="download" name="mail-handler-demo.css" location="/css/mail-handler-demo.css"/>
<resource type="download" name="mail-handler-demo.js" location="/js/mail-handler-demo.js"/>
<resource type="download" name="images/" location="/images"/>
<context>mail-handler-demo</context>
</web-resource>
<message-handler i18n-name-key="demohandler.name"
key="demoHandler"
class="com.example.plugins.tutorial.jira.mailhandlerdemo.DelegateMessageHandler"
add-edit-url="/secure/admin/EditDemoHandlerDetails!default.jspa"
weight="0"/>
<webwork1 key="actions" name="UI" class="java.lang.Object">
<actions>
<action name="com.example.plugins.tutorial.jira.mailhandlerdemo.EditDemoHandlerDetailsWebAction"
alias="EditDemoHandlerDetails"
roles-required="admin">
<view name="input">/view/editDemoHandlerDetails.vm</view>
<view name="securitybreach">/secure/views/securitybreach.jsp</view>
</action>
</actions>
</webwork1>
</atlassian-plugin>