2017-04-09 129 views
0

我使用Liferay 6.2作为我的门户平台。我的问题是,如果有一种方法通过ajax加载portlet?只提供portlet id。Liferay 6.2 - 从客户端加载portlet

例如

这是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组件以及所有它的PARAMS和包含的文件?

回答

1

不是一个干净的方式,但我不知道其他任何东西。

有一些东西叫做小部件网址。

您可以通过任何portlet的配置获取它。

enter image description here

现在的iframe中加载此URL。您将实现加载小程序而不刷新页面的目标。

这是一些样本片段。

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; 
}