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-запроса.