我一直在探索Jira插件开发。
我有一个场景,我需要在后端存储用户特定的数据。将它视为一组输入字段(在右侧视图问题页面上),它会向用户询问一些信息,然后在用户保存时显示它。我不想将输入字段包含在标记中。我想通过AJS调用API(REST模块)来处理事情。请建议最佳方法。
即使经过各种文档和示例,我也找不到可靠的方法来做到这一点,但仍然存在一些混乱。
为了存储数据,我可以找到两种方法。我可以使用 PluginSettingsFactory 或 ActiveObjects 。显然,这两个服务不能在REST模块中使用(如果我错了就纠正我。它会解决我的问题。)
我想通过 ActiveObjects 方法。但我不确定我是否可以在JIRA插件中使用它,因为它是为Generic Confluence应用程序制作的。
让我们说是否可以在JIRA插件中使用ActiveObjects。我不知道如何使用AJS调用servlet的POST。如果有的话,请建议一种方法吗?
如果无法在JIRA插件中使用ActiveObjects,我无论如何都必须在servlet中使用PluginSettingsFactory,因为我很难在REST模块中使用PluginSettingsFactory。同样,我将不得不通过Servlet方法,我不知道如何使用AJS调用servlet的POST。
我知道这篇文章中有太多问题。
如果有的话,请提出建议?
答案 0 :(得分:0)
您可以使用PluginSettingsFactory
,至少我使用它
创建UserSettings类
@ExportAsService
@Component
public class UserSettings {
private final PluginSettingsFactory pluginSettingsFactory;
private String KEY="mykey"
@Autowired
public UserSettings(
@ComponentImport PluginSettingsFactory pluginSettingsFactory,
) {
this.pluginSettingsFactory = pluginSettingsFactory;
}
public void set(String namespace, string key, string value){
PluginSettings pluginSettings = pluginSettingsFactory.createSettingsForKey(KEY + namespace);
pluginSettings.put(key, value);
}
public String get(String namespace, name key){
PluginSettings pluginSettings = pluginSettingsFactory.createSettingsForKey(KEY + namespace);
pluginSettings.get(key);
}
}
现在,您可以在REST模块中使用
Component
@Path("/path")
public class RestModule {
private final UserSettings UserSettings;
@Autowired
public RestModule(
UserSettings UserSettings
){
this.userSettings = userSettings;
}
@POST
@Path("{someParam}")
@Produces({MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_JSON})
public Response getResponse(@PathParam("someParam") String someParam, RequestDataModel data)
{
try {
// Storing a value of data.someKey with key "someKey" in namespace someParam
userSettings.set(someParam,"someKey", data.someKey);
}
}
}
免责声明:我没有专门编译和运行此代码,它是我的代码的简化版本,使用了这样的概念