科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道对多分发命令Action的支持(方案一)

对多分发命令Action的支持(方案一)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在我们日常基于Struts处理的操作中,已经大量的沿用了DispatchAction处理方式,本文就来给大家讲解如何通过扩展,让Liferay实现对多分发命令Action的支持。

作者:银狐999 来源:CSDN 2008年3月3日

关键字: java Action 多分发

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共3页)

    Liferay默认提供的基于Struts Action扩展的PortletAction是不支持多分发命令的,也就是我们一般常用的DispatchAction。但在我们日常基于Struts处理的操作中,已经大量的沿用了DispatchAction处理方式,采用“cmd=queryall”诸如此类的方式。

 
    本文就来给大家讲解如何通过扩展,让Liferay实现对多分发命令Action的支持。
 
    首先让我们来看看Liferay是如何处理的:
     portlet.xml中,我们一般会配置如下:

 
<portlet-class>com.liferay.portlet.StrutsPortlet</portlet-class>
<init-param>
    
<name>view-action</name>
    
<value>/ext/reports/view_reports</value>
</init-param>

       这样Liferay面对一个Portlet请求的时候,会根据请求model来执行Portlet的doView或doEdit方式。当执行doView的时候就会请求其view-action所配置的Action URL所代表的Action来处理。

 
      其处理流程大致是:Portlet类——〉RequestProcessor——〉StrutsAction处理类
 
     我们可以通过两种扩展方案来实现对多分发的支持:

 
     方案(一):扩展Liferay的StrutsPortlet类,并写一个DispatchPortletAction类,这样不用扩展RequestProcessor实现。

 
     方案(二):扩展RequestProcessor与,并写一个DispatchPortletAction类,这样可以直接使用Liferay所提供的StrutsPortlet类。对于 RequestProcessor的扩展,在通过portal.properties文件中通过配置 “struts.portlet.request.processor”属性来设置。
 
    接下来就两种方案做分别的详细讲解(本篇先讲方案一):
 
方案(一)
 
首先让我们写一个DispatchPortletAction类,此类可以通过扩展Liferay本身的PortletAction实现,也可以通过扩展Struts本身的DispatchAction实现。本人是选择后一种方式,这样扩展的代码量较少,都不要自己写execute方式,直接使用基类的即可。

 
对于DispatchPortletAction主要扩展 dispatchMethod和getMethodName方法。注意在getMechodName方法中,还追加了从 request.getAttribute(parameter)获取方法名称,并注意unspecified方法,这个是在没有指明访问方法的时候默认执行的,所以开发人员在后续写自己的Action一定要实现这个。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章