如何在Eclipse 4.3中使用ParameterizedCommand注入参数?

时间:2013-10-10 10:38:55

标签: eclipse-rcp e4

我目前正在实现Eclipse 4.3应用程序并遇到问题。我尝试参数化一个命令来删除特定的文件。我的方法对应Getting parameter of parameterized command in Eclipse RCP 4.2,但我不知道它是否正常工作。

在我的Application.e4xmi中,我添加了一个带参数的命令:

<commands xmi:id="_K1MVgDGKEeOO8o2ChqdHMA" elementId="first.application.command.deleteproject" commandName="deleteProjectCommand">
<parameters xmi:id="_Hr4FEDGTEeOO8o2ChqdHMA" elementId="cmd0" name="cmd0" typeId="" optional="false"/>
</commands>

在我的代码中的某一点,我创建命令,设置参数,并执行它:

Map<String, String> parameters = new HashMap<String, String>();
parameters.put("cmd0", "test");
final Command command =commandService.getCommand("first.application.command.deleteproject");
final ParameterizedCommand pcmd = ParameterizedCommand.generateCommand(command, parameters);
pcmd.executeWithChecks(null, null);

我有一个与命令链接的处理程序,它具有以下执行方法:

@Execute
public void execute(@Optional @Named("cmd0") String file) {
  System.out.println("delete project " + file);
}

一切正常,只有file没有注入,它会保持null。当我在执行之前检查pcmd变量时,它会告诉我它已将参数正确设置为{cmd0=test}(使用System.out.println(pcmd.getParameterMap());)。当我删除@Optional时,根本不会调用execute方法。

某处参数cmd0丢失了。我的代码中的错误在哪里?

谢谢!

1 个答案:

答案 0 :(得分:5)

刚刚找到解决方案。使用pcmd.executeWithChecks(null, null);执行似乎没有按预期工作。相反,我们需要注入的EHandlerService

@Inject
private EHandlerService handlerService;

现在我们用这样的服务执行命令:

handlerService.executeHandler(pcmd);

瞧!

我希望这也可以帮助别人。

相关问题