9.5 Porlet 之间的通信方式-PortletSession

9.5 Porlet 之间的通信方式- PortletSession
 
  • PortletSession
  • Portlet URL 调用
  • Public render parameters
  • Portlet events
  • 通过 URL传参
 

 

1.portlet之间通信
 
(1)portletA jsp页面设置表单
 
<%@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="id"  id="<portlet:namespace/>userName">
      <input type="submit" onclick="<portlet:namespace/>save()">
</form>

 

        portlet:actionURL 请求后台,name与后台方法名保持一致
 
(2)portletA 接收 jsp 传过来的参数
 
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 id = ParamUtil.getString(actionRequest, "id");
                   
                   // 作用域必须设置为应用级别 APPLICATION_SCOPE
                   actionRequest.getPortletSession().setAttribute("id", id,  PortletSession.APPLICATION_SCOPE);
          }

 

(3)portletB 接收 session 传过来的参数
 
public class PortletB extends MVCPortlet {
          @Override
          public void doView(RenderRequest renderRequest,
                             RenderResponse renderResponse) throws IOException,  PortletException {
                   // 取值也要加上作用域
                   String id =  (String)renderRequest.getPortletSession().getAttribute("id",  PortletSession.APPLICATION_SCOPE);
                   
                   renderRequest.setAttribute("rid", id);
                   super.doView(renderRequest, renderResponse);
          }
}

 

(4)portletB jsp 展示传过来的参数
 
<%@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/>
接收ID:${rid}

 

(5)liferay-portlet.xml 中配置namespace不是必须(如果写namespace的话不用配置)
<icon>/icon.png</icon>
<!-- 配置namespace不是必须的 -->
<requires-namespaced-parameters>false</requires-namespaced-parameters>
<header-portlet-css>/css/main.css</header-portlet-css>

 

 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值