gpt4 book ai didi

eclipse-rcp - 如何在 Eclipse 4.3 中使用 ParameterizedCommand 注入(inject)参数?

转载 作者:行者123 更新时间:2023-12-04 01:02:02 26 4
gpt4 key购买 nike

我目前正在实现一个 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未注入(inject),它保持 null .当我查看 pcmd变量在我执行它之前,它告诉我它已将参数正确设置为 {cmd0=test} (使用 System.out.println(pcmd.getParameterMap()); )。当我删除 @Optional ,execute方法根本没有被调用。

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

谢谢!

最佳答案

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

@Inject
private EHandlerService handlerService;

现在我们使用这样的服务执行命令:
handlerService.executeHandler(pcmd);

瞧!

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

关于eclipse-rcp - 如何在 Eclipse 4.3 中使用 ParameterizedCommand 注入(inject)参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19293503/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com