我已经设法解决了这个问题。看来 Liferay 的 IPC 不能很好地与 AJAX 配合使用。
正如问题中提到的,我为此portlet 的内容设置了一个目标URL 指向。要为我使用的 AJAX 调用生成 URL
<portlet:resourceURL var="ajaxResourceURL" />
然而,这个标签会生成指向目标 URL 而不是当前页面本身的 URL。因此,当进行 AJAX 调用时,没有数据,因为目标页面没有相同的 portlet。
我对此的解决方法是使用 javascript 将生成的 URL 路径替换为当前页面的路径。
var url = '<%= ajaxResourceURL %>';
var path = url.substring(url.lastIndexOf("/") + 1, url.indexOf("?"));
var pathname = window.location.pathname;
pathname = pathname.substring(pathname.lastIndexOf("/") + 1, pathname.length);
url = url.replace(path, pathname);
希望这将帮助那些将来面临同样问题的人。