Javascript 在刷新portlet期间传递参数

Javascript 在刷新portlet期间传递参数,javascript,liferay,portlet,Javascript,Liferay,Portlet,我有这样一个超链接: <a href="#" onclick="Liferay.Portlet.refresh('#p_p_id_myPortletName_')">link_name</a> 它工作得很好,我的portlet正在刷新,但我还需要传递其他变量参数以及portlet id,以便根据传递的参数进行刷新 我该怎么做呢?您可以创建呈现url并进行ajax调用以重新加载portlet内容 在view.jsp中: <%@ taglib uri="http://

我有这样一个超链接:

<a href="#" onclick="Liferay.Portlet.refresh('#p_p_id_myPortletName_')">link_name</a>
它工作得很好,我的portlet正在刷新,但我还需要传递其他变量参数以及portlet id,以便根据传递的参数进行刷新


我该怎么做呢?

您可以创建呈现url并进行ajax调用以重新加载portlet内容

在view.jsp中:

<%@ taglib uri="http://liferay.com/tld/portlet" prefix="liferay-portlet" %>
<liferay-portlet:renderURL var="reloadPortletURL" copyCurrentRenderParameters="true" portletMode="<%=LiferayPortletMode.VIEW.toString() %>"
    windowState="<%=LiferayWindowState.NORMAL.toString()%>">
    <liferay-portlet:param name="param1" value="Param1"/>
    <liferay-portlet:param name="param2" value="Param2"/>
</liferay-portlet:renderURL>

<a href="#" onclick="ajaxCall('${reloadPortletURL}')">Reload portlet</a>

一项简单的工作是创建自定义包装器方法,在调用Liferay.Portlet.refresh之前,您可以向该方法传递其他参数并实现您的任何需求,如下所示:

函数调用:

数据方法有两个参数。 您可以查看/ROOT/html/js/liferay/portlet.js以了解刷新方法的实现

portlet:它是portlet id

数据:此对象在发送ajax请求时将被视为表单数据

function refreshPortlet(portletId, param1, param2){

    var data = {'param1':param1,'param2':param2};

    Liferay.Portlet.refresh(portletId, data);
}
<a href="#" onclick="refreshPortlet('#p_p_id_myPortletName_', 'param1', 'param2');">link_name</a>
function refreshPortlet(portletId, param1, param2){

    /* peform operations with other parameters here */

    Liferay.Portlet.refresh(portletId);
}
function refreshPortlet(portletId, param1, param2){

    var data = {'param1':param1,'param2':param2};

    Liferay.Portlet.refresh(portletId, data);
}