在 magnolia 中使用自定义命令 class 和对话框进行自定义操作
Custom action using custom command class and dialog in magnolia
我想在页面应用程序上有一个自定义操作,它打开一个对话框,其中包含一个用于评论的字段和两个操作,即 cancel
和 commit
。提交操作调用自定义 ExportToGitCommand class。
我为 magnolia 中的页面应用程序定义了自定义操作定义和 class 操作:
public class ExportToGitCommandAction extends AbstractCommandAction<ExportToGitCommandActionDefinition>{
public ExportToGitCommandAction(ExportToGitCommandActionDefinition definition, JcrItemAdapter item,
CommandsManager commandsManager, UiContext uiContext, SimpleTranslator i18n) {
super(definition, item, commandsManager, uiContext, i18n);
// TODO Auto-generated constructor stub
}
public ExportToGitCommandAction(ExportToGitCommandActionDefinition definition, List<JcrItemAdapter> items,
CommandsManager commandsManager, UiContext uiContext, SimpleTranslator i18n) {
super(definition, items, commandsManager, uiContext, i18n);
// TODO Auto-generated constructor stub
}
}
在 Config 应用程序中我定义了 myAction:
MyAction
class ->ch.xxx.module.versioning.ExportToGitCommandActionDefinition
command -> /modules/xxx-module-versioning/commands/versioning/gitexport
dialogName -> /modules/xxx-module-versioning/dialogs/saveversion
ExportToGitCommandAction
中的构造函数被调用,但 myAction
中的对话框和命令未被调用。我需要实施什么方法才能使 myAction
:
- 打开一个对话框
- 执行自定义命令
自定义命令gitexport
代码为:
public class ExportToGitCommand extends BaseRepositoryCommand {
@Override
public boolean execute(Context context) throws Exception {
//custom code here
}
}
部分解决方案
在页面应用程序下,我使用以下配置创建了一个操作:
MyAction
class ->i nfo.magnolia.ui.framework.action.OpenCreateDialogActionDefinition
dialogName -> xxx-module-versioning:gitexport
icon -> icon-i-beacon
label -> MyAction
我在 xxx-module-versioning 应用程序下配置了对话框:
xxx-module-versioning
commands
dialogs
gitexport
form
actions
我认为您对操作的定义有误。您需要在目录中指定命令的 "name",而不是它的路径。如果目录名称与 "default".
不同,则需要指定目录名称
试试这个:
MyAction
class ->ch.xxx.module.versioning.ExportToGitCommandActionDefinition
command -> gitexport
catalog -> versioning
dialogName -> /modules/xxx-module-versioning/dialogs/saveversion
这是一个可行的解决方案。
在 magnolia 配置中的 magnolia pages 应用程序中配置自定义操作:
在 dialogName 下定义的相应模块中定义对话框:
自定义 class 扩展 CommandActionDefinition
:
public class ExportToGitCommandActionDefinition extends CommandActionDefinition{
public ExportToGitCommandActionDefinition() {
this.setImplementationClass(ExportToGitCommandAction.class);
}
我想在页面应用程序上有一个自定义操作,它打开一个对话框,其中包含一个用于评论的字段和两个操作,即 cancel
和 commit
。提交操作调用自定义 ExportToGitCommand class。
我为 magnolia 中的页面应用程序定义了自定义操作定义和 class 操作:
public class ExportToGitCommandAction extends AbstractCommandAction<ExportToGitCommandActionDefinition>{
public ExportToGitCommandAction(ExportToGitCommandActionDefinition definition, JcrItemAdapter item,
CommandsManager commandsManager, UiContext uiContext, SimpleTranslator i18n) {
super(definition, item, commandsManager, uiContext, i18n);
// TODO Auto-generated constructor stub
}
public ExportToGitCommandAction(ExportToGitCommandActionDefinition definition, List<JcrItemAdapter> items,
CommandsManager commandsManager, UiContext uiContext, SimpleTranslator i18n) {
super(definition, items, commandsManager, uiContext, i18n);
// TODO Auto-generated constructor stub
}
}
在 Config 应用程序中我定义了 myAction:
MyAction
class ->ch.xxx.module.versioning.ExportToGitCommandActionDefinition
command -> /modules/xxx-module-versioning/commands/versioning/gitexport
dialogName -> /modules/xxx-module-versioning/dialogs/saveversion
ExportToGitCommandAction
中的构造函数被调用,但 myAction
中的对话框和命令未被调用。我需要实施什么方法才能使 myAction
:
- 打开一个对话框
- 执行自定义命令
自定义命令gitexport
代码为:
public class ExportToGitCommand extends BaseRepositoryCommand {
@Override
public boolean execute(Context context) throws Exception {
//custom code here
}
}
部分解决方案
在页面应用程序下,我使用以下配置创建了一个操作:
MyAction
class ->i nfo.magnolia.ui.framework.action.OpenCreateDialogActionDefinition
dialogName -> xxx-module-versioning:gitexport
icon -> icon-i-beacon
label -> MyAction
我在 xxx-module-versioning 应用程序下配置了对话框:
xxx-module-versioning
commands
dialogs
gitexport
form
actions
我认为您对操作的定义有误。您需要在目录中指定命令的 "name",而不是它的路径。如果目录名称与 "default".
不同,则需要指定目录名称试试这个:
MyAction
class ->ch.xxx.module.versioning.ExportToGitCommandActionDefinition
command -> gitexport
catalog -> versioning
dialogName -> /modules/xxx-module-versioning/dialogs/saveversion
这是一个可行的解决方案。
在 magnolia 配置中的 magnolia pages 应用程序中配置自定义操作:
在 dialogName 下定义的相应模块中定义对话框:
自定义 class 扩展 CommandActionDefinition
:
public class ExportToGitCommandActionDefinition extends CommandActionDefinition{
public ExportToGitCommandActionDefinition() {
this.setImplementationClass(ExportToGitCommandAction.class);
}