Liferay Portlet Struts 动作路径挂钩错误
Liferay Portlet Struts action path hook error
我正在尝试覆盖“/blogs/view_entry”struts 路径。以下是liferay中的入口-hook.xml
<struts-action>
<struts-action-path>/blogs/view_entry</struts-action-path>
<struts-action-impl>com.smb.hook.action.BlogCustomEditAction</struts-action-impl>
</struts-action>
每当我点击博客 portlet 中的任何博客条目时,它都会重定向到
并且博客 portlet 变得不可见。
在控制台,我可以看到渲染方法中添加了测试打印语句。在记录以下错误消息之后:
ERROR [RuntimePageImpl-22][PortletRequestProcessor:466] Forward does not exist
以下是重写的方法:
@Override
public void processAction(StrutsPortletAction originalStrutsPortletAction,
PortletConfig portletConfig, ActionRequest actionRequest,
ActionResponse actionResponse) throws Exception {
System.out.println("processAction :");
super.processAction(originalStrutsPortletAction, portletConfig, actionRequest,
actionResponse);
}
@Override
public String render(StrutsPortletAction originalStrutsPortletAction,
PortletConfig portletConfig, RenderRequest renderRequest,
RenderResponse renderResponse) throws Exception {
System.out.println("render :");
return super.render(originalStrutsPortletAction, portletConfig, renderRequest,
renderResponse);
}
@Override
public void serveResource(StrutsPortletAction originalStrutsPortletAction,
PortletConfig portletConfig, ResourceRequest resourceRequest,
ResourceResponse resourceResponse) throws Exception {
System.out.println("serveResource :");
super.serveResource(originalStrutsPortletAction, portletConfig,
resourceRequest, resourceResponse);
}
我已尝试将 null 传递给 originalStrutsPortletAction,如 liferay dev site 上的示例之一所示,但输出没有变化。
如有任何帮助,我们将不胜感激。
我猜你扩展了 BaseStrutsPortletAction
(你的代码段中没有说明)。
BaseStrutsPortletAction
的默认方法 不 委托给 originalStrutsPortletAction
- 但它们委托给 class 的方法而不 class =13=],默认为空。
所以你必须自己打电话给originalStrutsPortletAction
:
@Override
public void processAction(StrutsPortletAction originalStrutsPortletAction,
PortletConfig portletConfig, ActionRequest actionRequest,
ActionResponse actionResponse) throws Exception {
originalStrutsPortletAction.processAction(portletConfig, actionRequest, actionResponse);
}
@Override
public String render(StrutsPortletAction originalStrutsPortletAction,
PortletConfig portletConfig, RenderRequest renderRequest,
RenderResponse renderResponse) throws Exception {
return originalStrutsPortletAction.render(portletConfig, renderRequest, renderResponse);
}
@Override
public void serveResource(StrutsPortletAction originalStrutsPortletAction,
PortletConfig portletConfig, ResourceRequest resourceRequest,
ResourceResponse resourceResponse) throws Exception {
originalStrutsPortletAction.serveResource(portletConfig, resourceRequest, resourceResponse);
}
我正在尝试覆盖“/blogs/view_entry”struts 路径。以下是liferay中的入口-hook.xml
<struts-action>
<struts-action-path>/blogs/view_entry</struts-action-path>
<struts-action-impl>com.smb.hook.action.BlogCustomEditAction</struts-action-impl>
</struts-action>
每当我点击博客 portlet 中的任何博客条目时,它都会重定向到
并且博客 portlet 变得不可见。
在控制台,我可以看到渲染方法中添加了测试打印语句。在记录以下错误消息之后:
ERROR [RuntimePageImpl-22][PortletRequestProcessor:466] Forward does not exist
以下是重写的方法:
@Override
public void processAction(StrutsPortletAction originalStrutsPortletAction,
PortletConfig portletConfig, ActionRequest actionRequest,
ActionResponse actionResponse) throws Exception {
System.out.println("processAction :");
super.processAction(originalStrutsPortletAction, portletConfig, actionRequest,
actionResponse);
}
@Override
public String render(StrutsPortletAction originalStrutsPortletAction,
PortletConfig portletConfig, RenderRequest renderRequest,
RenderResponse renderResponse) throws Exception {
System.out.println("render :");
return super.render(originalStrutsPortletAction, portletConfig, renderRequest,
renderResponse);
}
@Override
public void serveResource(StrutsPortletAction originalStrutsPortletAction,
PortletConfig portletConfig, ResourceRequest resourceRequest,
ResourceResponse resourceResponse) throws Exception {
System.out.println("serveResource :");
super.serveResource(originalStrutsPortletAction, portletConfig,
resourceRequest, resourceResponse);
}
我已尝试将 null 传递给 originalStrutsPortletAction,如 liferay dev site 上的示例之一所示,但输出没有变化。
如有任何帮助,我们将不胜感激。
我猜你扩展了 BaseStrutsPortletAction
(你的代码段中没有说明)。
BaseStrutsPortletAction
的默认方法 不 委托给 originalStrutsPortletAction
- 但它们委托给 class 的方法而不 class =13=],默认为空。
所以你必须自己打电话给originalStrutsPortletAction
:
@Override
public void processAction(StrutsPortletAction originalStrutsPortletAction,
PortletConfig portletConfig, ActionRequest actionRequest,
ActionResponse actionResponse) throws Exception {
originalStrutsPortletAction.processAction(portletConfig, actionRequest, actionResponse);
}
@Override
public String render(StrutsPortletAction originalStrutsPortletAction,
PortletConfig portletConfig, RenderRequest renderRequest,
RenderResponse renderResponse) throws Exception {
return originalStrutsPortletAction.render(portletConfig, renderRequest, renderResponse);
}
@Override
public void serveResource(StrutsPortletAction originalStrutsPortletAction,
PortletConfig portletConfig, ResourceRequest resourceRequest,
ResourceResponse resourceResponse) throws Exception {
originalStrutsPortletAction.serveResource(portletConfig, resourceRequest, resourceResponse);
}