Liferay 7.2 - 资源 URL 正在调用同一个实例

Liferay 7.2 - Resource URL is calling same instance

我在同一页面上有两个或更多相同的 portlet。并且 portlet 本身有一个 Resource URL 请求。

那么假设我在同一页面上有我的 portlet_pages_INSTANCE_1 和 portlet_pages_INSTANCE_2,并且 portlet 的相关代码是:

JSP:

<liferay-portlet:resourceURL var="loadDocuments" />

<i class="fa fa-angle-double-left" onclick="paginate()"></i>

<script>
    function paginate() {
        $.ajax({
            type: 'POST',
            url: '${ loadDocuments }',
            data: {
                '<portlet:namespace />someData': someData
            },
            success: function(data) {
                // handle the success
            }
        });
    }
</script>

如果页面中只有同一个 portlet 的一个实例,这会产生疑问。但是如果将多个相同的 portlet 添加到页面,它会出现奇怪的行为。

经过一些调试我尝试:

@Override
public void serveResource(ResourceRequest resourceRequest, ResourceResponse resourceResponse) throws IOException, PortletException {
    System.out.println(themeDisplay.getPortletDisplay().getInstanceId());
}

并注意到在不同 portlet 实例上单击分页按钮时,serveResource 仅打印我添加实例的最新 portlet。

有没有什么方法可以对特定的 portlet 实例进行 ajax 调用?

每个生成的 HTML 页面对 paginate 方法有多个定义。您需要为其命名空间,或参数化通用实现。

对于javascript,其中一个方法重载了前一个