2015-11-15 3 views
1

Я использую Liferay 6.2-ce-ga4, пытаясь встроить пользовательские renderURL в столбце aui-datatable. Следующий код работает, за исключением того, когда я пытаюсь вызов следующей строки коды из функции столбца форматировочной:Динамический renderURL в пределах aui-datatable

var renderURL = Liferay.PortletURL.createRenderURL(); 

Там нет коды ошибки генерируется в консоли Eclipse, при вызове этого кода (как я запуск Liferay от в пределах Eclispe). Все, что я могу вам сказать, это то, что, когда я прокомментирую вышеприведенную строку, я получаю правильно сгенерированный DataTable, но после раскомментации строки DataTable просто не отображает.

Полная страница кода выглядит следующим образом

<%@ page import="org.json.simple.JSONArray"%> 
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%> 
<%@ taglib uri="http://liferay.com/tld/portlet" prefix="liferay-portlet"%> 
<%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui"%> 
<%@ taglib uri="http://liferay.com/tld/util" prefix="liferay-util"%> 
<%@ taglib uri="http://liferay.com/tld/aui" prefix="aui"%> 

<script src="http://cdn.alloyui.com/2.0.0/aui/aui.js"></script> 
<link href="http://cdn.alloyui.com/2.0.0/aui-css/css/bootstrap.min.css" rel="stylesheet"></link> 

<portlet:defineObjects /> 

<% 
    JSONArray involvedParties = (JSONArray) renderRequest.getAttribute("involvedPartyDetails"); 
%> 

<aui:script> 
    YUI().use('aui-datatable', 'datatable-sort', 'liferay-portlet-url', function(Y) { 

     var columns = [ { 
      label : 'Involved Party Name', 
      key : 'name', 
      formatter : function(o) { 
       // var renderURL = Liferay.PortletURL.createRenderURL(); 
       return '<a href="http://www.cnn.com/">' + o.data.name + '</a>'; 
      }, 
      allowHTML : true, 
      sortable : true 
     } ]; 

     var data = <%=involvedParties%> 
     var dataTable = new Y.DataTable({ 
      columns : columns, 
      data : data, 
      scrollable : "y", 
      height : "500px" 
     }).render('#myDataTable'); 
    }); 
</aui:script> 

<div id="myDataTable"></div> 

Мой Liferay-portlet.xml дается следующим образом:

<?xml version="1.0"?> 
<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 6.2.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_6_2_0.dtd"> 

<liferay-portlet-app> 
    <portlet> 
     <portlet-name>involved-party-list</portlet-name> 
     <icon>/icon.png</icon> 
     <header-portlet-css>/css/main.css</header-portlet-css> 
     <footer-portlet-javascript> 
      /js/main.js 
     </footer-portlet-javascript> 
     <css-class-wrapper> 
      involved-party-list-portlet 
     </css-class-wrapper> 
     <add-default-resource>true</add-default-resource> 
    </portlet> 
    <role-mapper> 
     <role-name>administrator</role-name> 
     <role-link>Administrator</role-link> 
    </role-mapper> 
    <role-mapper> 
     <role-name>guest</role-name> 
     <role-link>Guest</role-link> 
    </role-mapper> 
    <role-mapper> 
     <role-name>power-user</role-name> 
     <role-link>Power User</role-link> 
    </role-mapper> 
    <role-mapper> 
     <role-name>user</role-name> 
     <role-link>User</role-link> 
    </role-mapper> 
</liferay-portlet-app> 

Любые предложения о том, как построить динамическую renderURL для каждой строки таблица данных оценена.

Как замечание, я попытался заменить YUI() на AUI(), но это также приводит к тому, что таблица данных не создается в браузере. Также будут оценены комментарии к преимуществам использования AUI против YUI.

+0

Также обсуждается здесь: https://www.liferay.com/community/forums/-/message_boards/view_message/63339849 –

ответ

1

Вы сами даете часть ответа - однако, есть что-то еще: <aui:script> уже делает AUI доступным. Вы можете просто заменить строки

<aui:script> 
    YUI().use('aui-datatable', 'datatable-sort', 'liferay-portlet-url', function(Y) { 

с

<aui:script use="aui-datatable,datatable-sort,liferay-portlet-url"> 

и использовать AUI, как А в блоке, что это открывает. Нет необходимости в дополнительном блоке YUI или AUI в этом теге.

+0

Спасибо, это, безусловно, сработало. –

1

Я использовал «Инструменты разработчика консоль» Chrome для просмотра выходных данных, и получаю следующее сообщение об ошибке:

yui: NOT loaded: liferay-portlet-url 

Кажется, я должен использовать AUI() вместо YUI(), чтобы использовать расширение Liferay ,

Смежные вопросы