Liferay Portlet Struts操作路径挂钩错误
我试图覆盖“/blogs/view\u entry”struts路径。以下是liferay-hook.xml中的条目Liferay Portlet Struts操作路径挂钩错误,liferay,liferay-6,Liferay,Liferay 6,我试图覆盖“/blogs/view\u 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-acti
<struts-action>
<struts-action-path>/blogs/view_entry</struts-action-path>
<struts-action-impl>com.smb.hook.action.BlogCustomEditAction</struts-action-impl>
</struts-action>
以下是被覆盖的方法:
@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);
}
我已尝试为originalStrutsPortletAction传递null,如上的一个示例所示,但输出没有变化
非常感谢您在这方面提供的任何帮助。我想您应该扩展
BaseStrutsPortletAction
(您的代码片段中没有说明)
BaseStrutsPortletAction
的默认方法不会委托给originalStrutsPortletAction
——但它们会委托给类中没有originalStrutsPortletAction
的方法,这些方法默认为空
因此,您必须自己调用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);
}
@Tobias我做的和上面一样,但是在调用processAction(..)的行上出现了一个异常,声明“Set render parameter已经被调用了”。我正在做的就是在这一行之前调用actionResponse.setWindowsState(WindowState.NORMAL);你能帮个忙吗?你能为这个问题提出一个新问题吗?您还应该包括stracktrace,因为在其他方面很难帮助您。
@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);
}