带有POST URL的Liferay.Util.openWindow? (为了允许更长的参数)

时间:2017-08-14 06:57:34

标签: post liferay popupwindow liferay-7 http-parameters

在我的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 parameters can not be over a few kilobytes。试图推动限制导致:

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

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

1 个答案:

答案 0 :(得分:1)

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