0

在我的 Liferay 7 JSP 中,我打开一个弹出窗口,该弹出窗口向 Liferay portlet 发起请求(该 portlet 转换文本并将结果发送回以在弹出窗口中显示):

<liferay-portlet:renderURL
        portletName="<%= portletId %>"
        var="uri"
        windowState="<%=LiferayWindowState.POP_UP.toString()%>">
    <portlet:param name="text" value="TEXTPLACEHOLDER" />
</liferay-portlet:renderURL>

<aui:script>
function transformTextAndShowPopup() {
    var uri = "<%= uri %>";
    uri = uri.replace("TEXTPLACEHOLDER", readTextEnteredByUser());

    javascript:Liferay.Util.openWindow({
        dialog:{
            width: 700,
            height: 300,
            resizable: true,
            modal:false,
            destroyOnClose: true
        },
        id: "My popup",
        title: "My popup",
        uri: uri
    });
</aui:script>

它适用于短文本。

问题:我现在也需要处理长文本。我不能再依赖 GET 参数了,因为GET 参数不能超过几千字节。试图突破极限会导致:

The server refused this request because the request URI was too long.

问题:我可以Liferay.Util.openWindow使用 POST 请求启动一个吗?或者以其他方式打开一个带有长文本的 Liferay 弹出窗口?(如 30 KB)

4

1 回答 1

1

我的建议是显示带有加载图标的对话框作为内容。然后通过 Ajax POST 查询将文本发布到 actionURL(使用 A.io.request 或 jQuery),一旦完成,您只需将对话框窗口正文的内容替换为 ajax 查询的结果。

于 2017-09-05T00:16:01.173 回答