ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Liferay通信-PortletURL

2021-07-15 18:32:54  阅读:220  来源: 互联网

标签:username uid renderRequest PortletURL 通信 编写 doView password Liferay


编写Portlet组件A(mvc)

  1. 编写后端java业务处理

    public class PortletUrlAPortlet extends MVCPortlet {
    	private Logger log = LoggerFactory.getLogger(PortletUrlAPortlet.class) ;
    	@Override
    	public void doView(RenderRequest renderRequest, RenderResponse renderResponse)
    			throws IOException, PortletException {
    		long uid = PortalUtil.getUserId(renderRequest) ;
    		log.info("PortletUrlAPortlet doView exec --- {}", uid);
    		super.doView(renderRequest, renderResponse);
    	}
    }
    
  2. 编写前端jsp页面

    <%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
    <%@ taglib uri="http://liferay.com/tld/aui" prefix="aui" %><%@
    taglib uri="http://liferay.com/tld/portlet" prefix="liferay-portlet" %><%@
    taglib uri="http://liferay.com/tld/theme" prefix="liferay-theme" %><%@
    taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %>
    <liferay-theme:defineObjects />
    <portlet:defineObjects />
    <p>
    	<%-- 1.  引入liferay-theme的标签后页面自动存在变量plid --%>
    	<%-- 2. portletName目标Portlet的名称,可以F12打开浏览器查看页面,
    	         元素<span id="p_mvc_ipc_PortalUrlBPortlet"></span>看到,
    	         去掉p_前缀即可 
    	--%>
    	<%-- 3. input的名称不能直接使用 <portlet:namespace/>作为username的前缀,
    	        因为每个portallet的namespace不一样,
    			需要使用组件B的namespace值,可打印到页面上显示出来,然后粘贴到这里
    	--%>
    	<liferay-portlet:renderURL var="updateUrl" plid="<%=plid %>" portletName="mvc_ipc_PortalUrlBPortlet">
    	 	<liferay-portlet:param name="password" value="123"/>
    	</liferay-portlet:renderURL>
    	<form method ="post" action ="${updateUrl}">
    		用户名:<input type ="text" name ="_mvc_ipc_PortalUrlBPortlet_username" value ="yicj"/>
    		<input type ="submit" value ="提交" />
    	</form>
    </p>
    

编写Portlet组件B (mvc)

  1. 编写后端java业务处理

    public class PortletUrlBPortlet extends MVCPortlet {
    	private Logger log = LoggerFactory.getLogger(PortletUrlAPortlet.class) ;
    	@Override
    	public void doView(RenderRequest renderRequest, RenderResponse renderResponse)
    			throws IOException, PortletException {
    		long uid = PortalUtil.getUserId(renderRequest) ;
    		// 1. 组件A提交过来的用户名
    		String username = ParamUtil.getString(renderRequest, "username") ;
    		String password = ParamUtil.getString(renderRequest, "password") ;
    		log.info("PortletUrlBPortlet doView exec ---uid: {} , username: {}, password: {}", uid, username, password);
    		// 2. 将数据放入request以备前端显示
    		renderRequest.setAttribute("username", username);
    		renderRequest.setAttribute("password", password);
    		super.doView(renderRequest, renderResponse);
    	}
    }
    
  2. 编写前端jsp代码片段

    <p>
    	<b><liferay-ui:message key="portalUrlB.caption"/></b><br/>
    	username : ${username } <br/>
    	password : ${password }<br/>
    </p>
    

标签:username,uid,renderRequest,PortletURL,通信,编写,doView,password,Liferay
来源: https://blog.csdn.net/yichengjie_c/article/details/118765873

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有