Liferay与Flex通过HTTPService通讯

最近学习Liferay,想通过Flex开发Portlet,但是又没有办法使Flex与服务器通讯,网上找来找去,都是通过RemoteObject进行通讯的,例如:

https://www.liferay.com/zh_CN/c/blogs/find_entry?entryId=2906618

 

最后只找自己动手,丰衣足食了。

 

其实通过HTTPService与Portlet通讯主要需要解决两个问题:

1. 通过某种方法将Flash文件嵌入Portlet页面中(由于在Portal容器中无法直接得到Portlet工程下的资源);

2. 通过一种类似Ajax的方式与Portlet交互,使得Portal容器对返回值不做过多的包装,并且访问的URL可以由Flex获取到。

 

第一个问题通过查询Java Portal2.0规范中关于Resource的描述解决:

http://developers.sun.com/portalserver/reference/techart/jsr286/jsr286_2.html

 

其中提到,可以通过:

获取Portlet工程的WebRoot目录访问地址。

 

而第二个问题,也可以通过生成ResourceURL来解决,不过ResourceURL主要用作返回Portlet资源,比如js、css、swf文件等的,因此在这里不是很适合,并且通过ResourceURL标签生成的地址中参数的部分在中间,不好修改,因此传递给flex时比较麻烦。

 

最后,我找到了liferay的LiferayWindowState中有一种状态为EXCLUSIVE,也就是只显示Portlet内容,正好符合我们的需要,那么就通过RenderURL标签生成访问地址,再将地址通过param交给flex即可,flex中获取此地址后,再通过HTTPService访问即可。

生成地址的代码如下:

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值