2013-12-16 1 views
0

Я новичок в liferay..что я хочу сделать, это передать значение функции javascript при щелчке ссылки и вызвать другую страницу jsp из этой функции со значением, переданным этой функции. .страница не пересылается через createRenderUrl

Вот что я пробовал.

<script type="text/javascript"> 
function sendId(userid) { 
    AUI().ready("liferay-portlet-url", function(A) { 
     var portletURL = Liferay.PortletURL.createRenderURL(); 

     alert("in function"+userid); 

     portletURL.setParameter("jspPage", "/html/assignsites/assignSites.jsp"); 
     portletURL.setParameter("id", userid); 
     portletURL.setPortletId("assignsites_WAR_AssignSitesportlet"); 

    }); } 
</script> 

for (User usersList: users) { 

%> 
    <tr> 
     <td><a href="#" onclick="sendId('<%=usersList.getUserId()%>');"><%=usersList.getFullName()%></a></td> 
     <td><%=usersList.getEmailAddress()%></td> 
    </tr> 
<% 
} 
%> 

Я хочу, чтобы получить USERID на assignSites.jsp так я устанавливаю это значение в portletURL. Но когда я нажимаю ссылку, появляется сигнал оповещения, и ничего не происходит..Я делаю это правильно ..?

Пожалуйста, меня направляют.

+0

В коде js ничего не написано, чтобы что-то произошло. –

+0

Iam, устанавливающий URL-адрес, который я хочу переслать в portletUrl .. Я думал, сделав это, он перейдет на нужную страницу. Не могли бы вы исправить мой код, что мне нужно выполнить? – xyz

+0

Я также попытался модифицировать код яваскрипта путем добавления portletId и делая AUI(). Использовать() для AUI.action() до сих пор ничего не происходит – xyz

ответ

1

Есть две проблемы с кодом вы предоставляете:

  • AUI пространств имен предназначены, чтобы быть на высшем уровне, а не части реализации функции.
  • Несмотря на это, вы ничего не делаете с построенной переменной portletURL.
комментарий

Панкая Kathiriya уже дает возможность генерировать URL, без какого-либо JavaScript вовлеченного вообще, здесь довольно отпечатанная (и немного изменен) версия этого: (Внимание: псевдокод, не написано здесь и никогда не тестировался)

for (User usersList: users) { 
%> 
    <portlet:renderURL var="assignSiteURL"> 
     <portlet:param name="id" value="<%=usersList.getUserId()%>"/> 
     <portlet:param name="jspPage" value="/html/assignsites/assignSites.jsp"/> 
    </portletRenderURL> 
    <tr> 
     <td><a href="<%=assignSiteURL%>"><%=usersList.getFullName()%></a></td> 
     <td><%=usersList.getEmailAddress()%></td> 
    </tr> 
<% 
} 
%> 

Имейте в виду, что AUI пространства имен предназначены для выделения кода JS из кода других портлетов: Ваш предложенный код будет в конечном итоге с глобальной функцией называется sendId (х) - любой другой портлет на той же странице может ввести только один метод с тем же именем. Это приведет к конфликту, который трудно решить, поэтому вы не должны этого делать.

Конечно, недостатком этой изоляции является то, что вы не можете просто вызвать такие методы, как легко в обработчиках onclick. Однако вы можете перечислить все узлы, которые вы хотите изменить, и динамически обновлять их.

Если вы настаиваете на решении javascript, я оставляю это для вас (или кого-то еще), отчасти потому, что я не ожидаю, что это будет необходимо в этом случае.

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