我目前正在实现Eclipse 4.3应用程序并遇到问题.我尝试参数化一个命令来删除特定的文件.我的方法对应于Eclipse RCP 4.2中参数化命令的Getting参数,但我不知道它是否正常工作.
在我的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>
Run Code Online (Sandbox Code Playgroud)
在我的代码中的一点,我创建命令,设置参数,并执行它:
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);
Run Code Online (Sandbox Code Playgroud)
我有一个与命令链接的处理程序,它具有以下执行方法:
@Execute
public void execute(@Optional @Named("cmd0") String file) {
System.out.println("delete project " + file);
}
Run Code Online (Sandbox Code Playgroud)
一切正常,只有file不注入,它停留null.当我pcmd在执行它之前检查变量时,它告诉我它已将参数正确设置为{cmd0=test}(使用System.out.println(pcmd.getParameterMap());).当我删除时@Optional,根本不调用execute方法.
某处参数cmd0丢失了.我的代码中的错误在哪里?
谢谢!
刚刚找到解决方案.执行pcmd.executeWithChecks(null, null);似乎没有按预期工作.相反,我们需要EHandlerService我们注入的:
@Inject
private EHandlerService handlerService;
Run Code Online (Sandbox Code Playgroud)
现在我们用这样的服务执行命令:
handlerService.executeHandler(pcmd);
Run Code Online (Sandbox Code Playgroud)
瞧!
我希望这也可以帮助别人.
| 归档时间: |
|
| 查看次数: |
2404 次 |
| 最近记录: |