我使用Liferay 6.2作为我的门户平台。我的问题是,是否有办法通过ajax加载portlet?仅提供portlet id。
e.g。
这是portlet信息:
<portlet>
<portlet-name>my_portlet</portlet-name>
<instanceable>false</instanceable>
<private-session-attributes>false</private-session-attributes>
<header-portlet-javascript>/js/my_portlet/app.js</header-portlet-
</portlet>
<portlet>
<portlet-name>my_portlet</portlet-name>
<display-name>My Portlet</display-name>
<portlet-class>com.ui.portlets.generic.GenericPortlet</portlet-class>
<init-param>
<name>view-template</name>
<value>/view.jsp</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
</supports>
<portlet-info>
<title>myportlet</title>
</portlet-info>
</portlet>
我想从客户端(通过javascript)获取渲染html portlet以及它的所有参数和包含的文件?
答案 0 :(得分:1)
不是一个干净的方式,但我不知道其他任何事情。
有一些称为小部件URL的东西。
您可以通过任何portlet的配置获得它。
现在在iFrame中加载此网址。你将实现加载protlet而不刷新页面的目标。
这里有一些示例代码段。
window.Liferay = window.Liferay || {};
Liferay.Widget = function(options) {
options = options || {};
var id = options.id || '_Liferay_widget'
+ (Math.ceil(Math.random() * (new Date).getTime()));
var height = options.height || '100%';
var url = options.url
|| 'http://www.liferay.com/widget/web/guest/community/forums/-/message_boards';
var width = options.width || '100%';
var html = '<iframe frameborder="0" height="' + height + '" id="' + id
+ '" src="' + url + '" width="' + width + '"></iframe>';
return html;
}