2017-08-14 8 views
0

を(長いパラメータを可能にするために)、私は(ポートレットは、テキストを変換し、ポップアップ内の表示のために結果を送り返し)のLiferayポートレットへの要求を起動するポップアップを開く:POST URLを持つLiferay.Util.openWindow?私のLiferay 7 JSPで

<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 parameters can not be over a few kilobytesのように、もうGETパラメータに頼る余裕がありません。

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

QUESTION:には限界結果をプッシュしようとすると、私はPOSTリクエストでLiferay.Util.openWindowを起動することはできますか?そうでなければ、テキストが長いLiferayポップアップを開きますか? (30キロバイトなど)

+0

ActionURLのデフォルトはpostです。それを使わないのはなぜですか? –

+0

@ChrisMaggiulli:ActionURLをポップアップURLとして使用できますか? –

答えて

1

私の提案は、コンテンツとして読み込みアイコンを持つダイアログを表示することです。 その後、Ajax POSTクエリを介してactionURLに(A.io.requestまたはjQueryのどちらかを使用して)投稿し、ダイアログウィンドウの本文の内容をajaxクエリの結果と置き換えるだけで完了します。

+0

はい、まさに私がやったことです。欠点は、ネットワークトラフィックが増え、ユーザーの待ち時間が増えることです。 POSTの処理に時間がかかる場合は、UIの反応性が向上します。 –

関連する問題