我是liferay..what的新手,我想做的是在点击一个链接时将值传递给javascript函数,并使用传递给该函数的值从该函数调用另一个jsp页面。
这是我尝试过的。
<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>
<%
}
%>我想检索assignSites.jsp上的userId,所以我在portletURL中设置了这个值。但是当我点击链接的时候,警报就会出现,没有任何东西happens..am我做对了..?
请谁给我指点一下。
发布于 2013-12-16 19:55:22
您提供的代码有两个问题:
Pankaj Kathiriya的评论已经给出了一种不需要任何javascript就可以生成URL的方法,这是一个打印得很好(略有修改)的版本:(警告:伪代码,在这里编写,从未测试过)
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代码与其他portlet的代码隔离开来:建议的代码将以一个名为sendId(x)的全局函数结束-同一页面上的任何其他portlet都可以引入另一个同名的方法。这将导致难以解决的冲突,因此您不应该这样做。
当然,这种隔离的缺点是您不能像在"onclick“处理程序中那样轻松地调用这些方法。但是,您可以枚举要更改的所有节点并动态更新它们。
如果您坚持使用javascript解决方案,我将把它留给您(或其他人),部分原因是我认为在这种情况下没有必要使用它。
https://stackoverflow.com/questions/20604975
复制相似问题