Liferay 中ActionRequest,RenderRequest 转换为HttpServletRequest 类对象的方法

正如 ActionRequest,RenderRequest,HttpServletRequest及其意义  中所说明的,Liferay 实现了接口 ActionRequest 和RenderRequest。当所实现方法需要传入参数request 为HttpServletRequest 时需要将ActionRequest 和RenderRequest 转换成HttpServletRequest 类对象。由以下三步完成。

(1)获取ActionRequest 或RenderRequest 接口类型的Request。
(2)强制转换成其实现类。
(3)调用实现类下的getHttpServletRequest() 方法。

伪代码分别如下:

Function( ActionRequest req)
        throws PortalException, SystemException {
          ……   ……

        ActionRequestImpl reqImpl = ( ActionRequestImpl )req;
        HttpServletRequest httpservletrequest = reqImpl.getHttpServletRequest();
          ……   ……
}

Function( RenderRequest req)
        throws PortalException, SystemException {
          ……   ……

        RenderRequestImpl reqImpl = ( RenderRequestImpl )req;
        HttpServletRequest httpservletrequest = reqImpl.getHttpServletRequest();
          ……   ……
}

        事实上ActionRequestImpl 内没有实现自己的getHttpServletRequest() 方法,Liferay 中RenderRequestImpl 实现了RenderRequest 接口,ActionRequestImpl 继承了RenderRequestImpl 类,并对其ActionRequest 接口进行实现。
        在调用getHttpServletRequest() 方法时,返回的实际上是DynamicServletRequest 对象。该类型扩展自HttpServletRequestWrapper 类,也就是说将请求打包,当有多个请求时,这里每个Portlet 都可能发出独立的请求,而每个Portlet 中又可能嵌套若干个Portlet,DynamicServletRequest 对象就将这些请求打包成一个Wrapper 一起发送。因此,RenderRequestImpl 对象getHttpServletRequest() 方法的作用是返回一个经过打包以后的普通 HttpServletRequest。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值