如何在aray脚本中执行renderURL或在Liferay中执行javascript

时间:2014-06-10 11:06:41

标签: jquery liferay liferay-6 alloy-ui liferay-aui

我遇到过一个需要在javascript中使用renderURL的场景。 我有一个包含许多行数据的aui-datatable。单击任何行后,我需要调用渲染URL来加载下一个视图。

通常,我曾经在按钮的情况下通过在onClick事件中编写renderURL来使用renderURL。即,

aui:按钮名称=" 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); 

2 个答案:

答案 0 :(得分:3)

这可能会有所帮助。我使用Liferay 6.1.2实现了它。我想根据点击的按钮,使用Javascript生成一个PortletURL(在我的情况下为RenderURL)。我在JSP文件中所做的是以下内容:

1)我有四个按钮:

<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>

这可以应用于根据从数据库检索的数据生成许多行的情况。

答案 1 :(得分:2)

    AUI().use('liferay-portlet-url', function(A) {
      var url=Liferay.PortletURL.createRenderURL();
      url.setPortletId('currentPortletId');
      url.setParameter('name','value');
      A.one(document.createElement('a')).attr('href',url).simulate('click');
   })

上面的代码对您有助于实现您的要求。将它放在数据表行的单击事件处理函数中。

注意:只需根据您的要求替换上述代码中的currentPortletId,名称和值,您也可以加载&#39; liferay-portlet-url&#39;模块分开。