1

javascript で renderURL を使用する必要があるシナリオに遭遇しました。多くのデータ行を持つ aui-datatable があります。任意の行をクリックしたら、レンダリング URL を呼び出して次のビューを読み込む必要があります。

通常、onClick イベントに renderURL を記述して、ボタンの場合は renderURL を使用していました。つまり、

aui:button name="TestButton" onClick="<%=testRenderURL.toString()%>"

しかし、現在のシナリオでは、コントロールは私のデータテーブルのデリゲート関数になります。つまり、クリック ハンドラー関数は次のとおりです。

Y.delegate('click', function(e) {
var target = e.currentTarget;
record = this.get('recordset').getRecord(target.get('id')).getValue();
alert(record.name);
  //HERE I NEED TO CALL RENDER URL AND LOAD NEXT JSP PAGE
  // after fetching current row values. i.e, send record.name to next jsp file
}, '#myTable', 'tr', dt); 
4

2 に答える 2

3

これは役立つかもしれません。Liferay 6.1.2 を使用して実装しました。Javascript を使用して、クリックされたボタンに応じて PortletURL (私の場合は RenderURL) を生成したかったのです。JSPファイルで行ったことは次のとおりです。

1) 4 つのボタンがありました。

<aui:button value="Button 1" name="button1" 
    onClick='<%=renderResponse.getNamespace() + "getButtonId(1);"%>'/>

<aui:button value="Button 2" name="button2" 
    onClick='<%=renderResponse.getNamespace() + "getButtonId(2);"%>'/>

<aui:button value="Button 3" name="button3" 
    onClick='<%=renderResponse.getNamespace() + "getButtonId(3);"%>'/>

<aui:button value="Button 4" name="button4" 
    onClick='<%=renderResponse.getNamespace() + "getButtonId(4);"%>'/>

2) Javascript を使用して PortletURL を生成し、後で転送する新しい JSP ページを設定しました。

<aui:script use="liferay-portlet-url">
Liferay.provide(
  window,
  '<portlet:namespace/>getButtonId',
  function(id) {
    var renderURL = Liferay.PortletURL.createRenderURL();
    renderURL .setPortletMode("view");
    renderURL .setWindowState("normal");
    renderURL .setPortletId("myPortletId");
    renderURL.setParameter("page","new_jsp_page");
    renderURL.setParameter("buttonId",id);

    window.location.href = renderURL.toString();
   }
  );
</aui:script>

これは、データベースから取得したデータに応じて多くの行が生成される状況に適用できます。

于 2014-10-30T16:04:29.743 に答える