Magnolia 6.0のカスタムアクションの実装と同様に、マグノリアのページアプリのアクションバーにカスタムアクションを実装しようとしています。
私の実装は:
package ch.zzz.module.versioning;
import info.magnolia.ui.api.action.Action;
import info.magnolia.ui.api.action.ActionExecutionException;
import info.magnolia.ui.api.action.ConfiguredActionDefinition;
public class ZzzVersioning extends ConfiguredActionDefinition {
public ZzzVersioning() {
this.setImplementationClass(MyAction.class);
}
}
class MyAction implements Action {
@Override
public void execute() throws ActionExecutionException {
System.out.println("Hello! Executed MyAction");
}
}
ページアプリのアクションの構成は、クラスch.zzz.module.versioning.ZzzVersioningを使用しており、ページアプリのアクションバーのアイテムの下にアクションをリストしました。
構成アプリモジュール>ページ>アプリ>ページ>サブアプリ>ブラウザ>アクション> MyActions -class = ch.zzz.module.versioning.ZzzVersioning
モジュール>ページ>アプリ>ページ>サブアプリ>ブラウザ>アクションバー>セクション>ページアクション>インポートエクスポートアクション>アイテム-マイアクション
アクションバーのMyActionをクリックすると、エラーメッセージが表示されます。 Could not instantiate action class for action: MyAction.
これは私がログで得るものです:
2019-11-22 08:37:26,498 ERROR fo.magnolia.ui.contentapp.browser.BrowserPresenter: An error occurred while executing action [MyAction]
info.magnolia.ui.api.action.ActionExecutionException: Could not instantiate action class for action: MyAction
...そしてスタックの最後に:
Caused by: info.magnolia.objectfactory.MgnlInstantiationException: No suitable constructor found for class [class ch.zzz.module.versioning.MyAction]
at info.magnolia.objectfactory.ObjectManufacturer.newInstance(ObjectManufacturer.java:124) ~[magnolia-core-5.6.10.jar:?]
at info.magnolia.objectfactory.guice.GuiceComponentProvider.newInstanceWithParameterResolvers(GuiceComponentProvider.java:132) ~[magnolia-core-5.6.10.jar:?]
at info.magnolia.ui.framework.ioc.UiContextBoundComponentProvider.lambda$newInstanceWithParameterResolvers$4(UiContextBoundComponentProvider.java:113) ~[magnolia-ui-framework-5.6.10.jar:?]
at info.magnolia.ui.framework.ioc.UiContextBoundComponentProvider.provideInCurrentScope(UiContextBoundComponentProvider.java:125) ~[magnolia-ui-framework-5.6.10.jar:?]
at info.magnolia.ui.framework.ioc.UiContextBoundComponentProvider.newInstanceWithParameterResolvers(UiContextBoundComponentProvider.java:113) ~[magnolia-ui-framework-5.6.10.jar:?]
at info.magnolia.ui.framework.ioc.UiContextBoundComponentProvider.newInstance(UiContextBoundComponentProvider.java:108) ~[magnolia-ui-framework-5.6.10.jar:?]
at info.magnolia.ui.api.action.AbstractActionExecutor.createAction(AbstractActionExecutor.java:90) ~[magnolia-ui-api-5.6.10.jar:?]
... 129 more
これを機能させる方法はありますか?
ソリューション ©Ducay035私のおかげで、カスタムバージョン管理クラスのための解決策を見つけることができました。
package ch.zzz.module.versioning;
import info.magnolia.ui.api.action.CommandActionDefinition;
/**
* Definition interface for the MyAction page action.
*/
public class UzhVersioning extends CommandActionDefinition {
public UzhVersioning() {
this.setImplementationClass(MyAction.class);
}
}
およびMyActionクラス:
public class MyAction extends AbstractMultiItemAction<Versioning> {
public MyAction(Versioning definition, JcrItemAdapter item, UiContext uiContext) {
super(definition, item, uiContext);
// TODO Auto-generated constructor stub
}
@Override
public void execute() {
////your action code here
}
IOCシステムが見つけられるように、クラスを公開する必要があります。ただし、注入メカニズムを使用する場合は、コンストラクターを非公開にすることができます。
乾杯、
それが役に立てば幸い
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加