9.5.4 portlet 之间的通信方式-renderURL

9.5.4 portlet 之间的通信方式-renderURL

portletA 向 portletB 发送数据

(1)portletA jsp页面引入

<%@ taglib uri="http://liferay.com/tld/portlet" prefix="liferay-portlet" %>

<!-- 通过标签向 portletB 发数据,send 和下面 action 中的 send保持一致,portletName 为要接收数据的portlet名字,通过F12可以获取到,去除p_-->
<liferay-portlet:renderURL var="send" plid="<%=plid%>" portletName="portletb_WAR_IPCportlet"></liferay-portlet:renderURL>

<form action="<%=send.toString()%>&urlparam=urlabc" method="post" name="<portlet:namespace/>form" >
	portletA 直接向 portletB 传递:<input type="text" name="id" id="<portlet:namespace/>userName">
	<input type="submit" οnclick="<portlet:namespace/>save1()">

</form>

​ plid为目标portlet所在的页面的id,如果是当前页面的plid可以从themedisplay里面取到,如果是指定页面的,我们可以基于friendlyUrl取到,方法为:

long viewPlid= PortalUtil.getPlidFromFriendlyURL(themeDisplay.getCompanyId(), "/web/guest/newsview")

​ 所有代码如下:

<%@page import="javax.portlet.PortletRequest"%>
<%@page import="com.liferay.portlet.PortletURLFactoryUtil"%>
<%@page import="com.liferay.portlet.PortletURLFactory"%>
<%@page import="javax.portlet.PortletURL"%>
<%@page import="com.liferay.portal.kernel.portlet.LiferayWindowState" %>
<%@page import="com.liferay.portal.util.PortalUtil" %>
<%@page import="com.liferay.portal.model.User" %>
<%@page contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<!-- 标签可以获取plid -->
<%@ taglib uri="http://liferay.com/tld/theme" prefix="theme"%>

<theme:defineObjects/>
<%@ taglib uri="http://liferay.com/tld/portlet" prefix="liferay-portlet" %>
<portlet:defineObjects/>

<portlet:actionURL var="updateForm" name="sendata"></portlet:actionURL>


<!-- 通过标签向 portletB 发数据 -->
<liferay-portlet:renderURL var="send" plid="<%=plid%>" portletName="portletb_WAR_IPCportlet"></liferay-portlet:renderURL>

<form action="<%=send.toString()%>&urlparam=urlabc" method="post" name="<portlet:namespace/>form" >
	portletA 直接向 portletB 传递:<input type="text" name="id" id="<portlet:namespace/>userName">
	<input type="submit" οnclick="<portlet:namespace/>save1()">

</form>

(2)portletB 接收

public class PortletB extends MVCPortlet {

	@Override
	public void doView(RenderRequest renderRequest,
			RenderResponse renderResponse) throws IOException, PortletException {
		// 直接接收从 portletA 中传过来的值
		String aid = ParamUtil.getString(renderRequest, "id");
		System.out.println("从 portletA 中传过来的值为:" + aid);
		super.doView(renderRequest, renderResponse);
	}
 

}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值