在我的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千字节)
答案 0 :(得分:1)
我的建议是将带有加载图标的对话框显示为内容。 然后通过Ajax POST查询将文本发布到actionURL(使用A.io.request或jQuery),一旦完成,只需用ajax查询的结果替换对话框窗口主体的内容。