Liferay.Util.openWindow с POST URL? (чтобы разрешить более длинные параметры)

В моем Liferay 7 JSP я открываю всплывающее окно, которое запускает запрос к портлету Liferay (этот портлет преобразует текст и отправляет результат обратно для отображения внутри всплывающего окна):

<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 килобайт)

1 ответ

Решение

Я предлагаю показать диалог с иконкой загрузки в качестве контента. Затем отправьте текст с помощью Ajax POST-запроса в actionURL (используйте A.io.request или jQuery) и после завершения просто замените содержимое тела диалогового окна результатами вашего ajax-запроса.

Другие вопросы по тегам