問題
processAction method not implemented
エラーがサーバーログに多数発生します:
ERROR [http-nio-8080-exec-1][PortletServlet:117] null
javax.portlet.PortletException: javax.portlet.PortletException: processAction method not implemented
at com.liferay.portal.kernel.portlet.LiferayPortlet.callActionMethod(LiferayPortlet.java:192) ~[portal-kernel.jar:?]
at com.liferay.portal.kernel.portlet.bridges.mvc.MVCPortlet.callActionMethod(MVCPortlet.java:439) ~[portal-kernel.jar:?]
at com.liferay.portal.kernel.portlet.LiferayPortlet.processAction(LiferayPortlet.java:82) ~[portal-kernel.jar:?]
at com.liferay.portal.kernel.portlet.bridges.mvc.MVCPortlet.processAction(MVCPortlet.java:256) ~[portal-kernel.jar:?]
...
Caused by: javax.portlet.PortletException: processAction method not implemented
at javax.portlet.GenericPortlet.processAction(GenericPortlet.java:223) ~[portlet.jar:3.0.1]
at com.liferay.portal.kernel.portlet.LiferayPortlet.callActionMethod(LiferayPortlet.java:187) ~[portal-kernel.jar:?]
... 191 more
Environment
- Liferay DXP 7.1以降。
解決策
- 原因としては、urlで使用されているアクション名が宣言されていない、または異なる名前であることが考えられます。
- 例えば、こう定義すると:
@ProcessAction(name="submitMyAction")
...submitMyAction
URLで同じ名前を宣言する必要があります。 - 他の例として、MVCActionCommandの中で、 mvc.command.nameというプロパティを指定した場合です:
@Component(
immediate = true,
property = {
"javax.portlet.name=" + JournalPortletKeys.JOURNAL,
"mvc.command.name=/journal/add_folder"
},
service = MVCActionCommand.class
)
public class AddFolderMVCActionCommand extends BaseMVCActionCommand {
@Override
protected void doProcessAction(
ActionRequest actionRequest, ActionResponse actionResponse)
throws Exception {
...
}
...
}このプロパティの値は、URLパラメータMyPortlet_javax.portlet.actionと同じである必要があります。
会員限定記事
Liferay エンタープライズ サブスクリプションをお持ちのお客様は1500件を超えるベストプラクティス、トラブルシューティング、その他のソリューション記事を閲覧できます。ログインすると、記事全体をお読みいただけます。
ログイン