9.5.5 portlet 之间的通信方式-public-render-parameter

9.5.5 portlet 之间的通信方式-public-render-parameter

设置一个公共参数,多个 portlet 都可以 使用

(1)portlet.xml 中定义参数

	<!-- 公共渲染参数 -->
	<public-render-parameter>
		<identifier>city</identifier>
		<name>city</name>
		<!-- 类似命名空间一样的,和 name 不能共存,只能有一个 -->
		<!-- <qname xmlns:x="http://www.baidu.com">x:city</qname> -->
	</public-render-parameter>

(2)portlet.xml 中相应的 portlet 添加支持

<supported-public-render-parameter>city</supported-public-render-parameter>

(3)在发布的 portlet 中添加发布

actionResponse.setRenderParameter("city", scity);

​ scity 为 jsp 页面传过来的值,如下:

<%@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" %>

<portlet:defineObjects/>

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

<form action="<%=updateForm%>&urlparam=urlabc" method="post" name="<portlet:namespace/>form" >
	城市:<input type="text" name="scity">
	<input type="submit">

</form>

​ 在 portlet 中接收并添加发布

public class PortletA extends MVCPortlet {

	@Override
	public void doView(RenderRequest renderRequest,
			RenderResponse renderResponse) throws IOException, PortletException {

		super.doView(renderRequest, renderResponse);
	}

	public void sendata(ActionRequest actionRequest,
			ActionResponse actionResponse) throws IOException, PortletException {

		String city = ParamUtil.getString(actionRequest, "scity");
		actionResponse.setRenderParameter("city", city);

	}


}

(4)在其他 portlet 中接收

String scity = ParamUtil.getString(renderRequest, "city");

​ portletB 中接收

<%@page import="com.liferay.portal.kernel.util.ParamUtil"%>
<%@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" %>

<portlet:defineObjects/>

<%
	String scity = ParamUtil.getString(renderRequest, "city");
%>

城市:${scity}:<%=scity%>

​ 不同的页面接收不到参数,只有在同一个页面
可以关闭接收公共参数,在 portlet 设置>配置>沟通>取消忽略单选框
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值