Liferay中利用URL传参数
业务场景:现在有一个新闻系统,有两个页面,A是新闻列表页面/web/guest/home,B是新闻的详情页面/web/guest/newsview。
业务逻辑为:在A页面中,点击新闻的标题进入B页面,在B页面的展现相应的新闻详情。
解决方案:此类场景可以使用URL传递参数。
URL传递参数与传统web一样。形式是:/web/hqw/newsview?id=XXX。
我们只来实现一个小例子,与上面的场景基本一致。
- 首先我们先要在插件工程中创建两个Portlet,一个是Portlet1(表示新闻列表的portlet),一个是News(表示新闻详情的portlet)。
- 新建一个页面newPage。如图示:
注,如果和我的页面不一样,可以依照下面的方法去修改一下主题即可。访问->控制面板->站点页面->选择一个外观->保存 。即可。如下图:
如果页面是英文的,想换成中文,可以在端口号后面加上/zh即可。如下:
http://localhost:8080/zh/web/guest/newpage
3. 将第一步中创建的两个portlet添加到不同的页面中,News添加到新建的页面newPage中(添加->更多->示例->找到News->添加),并记录下详情页面的URL地址:http://localhost:8080/zh/web/guest/newpage
4. 把Portlet1的view.jsp文件输入以下内容:
<%@ page pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %> <portlet:defineObjects /> <a href="/zh/web/guest/newpage?id=222">点击跳转</a>
5. 重写News对应的类的doView方法。如下:
public class News extends MVCPortlet { @Override public void doView(RenderRequest renderRequest, RenderResponse renderResponse) throws IOException, PortletException { // TODO Auto-generated method stub //取出前台发送的id值 HttpServletRequest request = PortalUtil.getHttpServletRequest(renderRequest); String id = PortalUtil.getOriginalServletRequest(request).getParameter("id"); renderRequest.setAttribute("id", id); super.doView(renderRequest, renderResponse); } }
关键点在这里,在这里只要取到URL中的id这个参数,就可以根据这个新闻id获取到新闻的具体内容,将新闻的相关信息放到request里面,再在页面中显示。
6. 编写News Portlet所对应的view.jsp文件,让id值显示出来。
<%@ page pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %> <portlet:defineObjects /> 您要查询的id值为:${id }
重新部署之后运行项目。点击portlet1中的a标签如下:
然后会跳转到News所在的页面,并且会把id值显示出来:如下所示:
解析:
(1) 点击上面的新闻列表的时候浏览器会将地址跳转到http://xxx/web/guest/newsview? newsId =XXX的页面。这个时候会执行新闻详情的portlet中的doView方法。
(2) 点击第二步中的a标签,就会跳转到带有新闻详情的portlet的页面中,并且会把参数(id)发给此页面中的所有的portlet中(也包括新闻详情的portlet)。
(3) 取这个URL的参数必须使用如下的两行代码而不能直接在renderRequest里面取:
HttpServletRequest request = PortalUtil.getHttpServletRequest(renderRequest);
String articleId = PortalUtil.getOriginalServletRequest(request).getParameter("articleId");
参考地址:http://www.huqiwen.com/2012/12/25/use-liferay-url-param/
Liferay中利用URL传参数的更多相关文章
- thinkphp中URL传参数的几种方式
在thinkphp中,url传参合asp.net中原理类似,下面就单个参数和多个参数传递方式进行一个简单讲解 1.传单个参数 单个参数这种比较简单,例如 想像edit操作里面传递一个id值,如下写法_ ...
- thinkphp 3.2.3 入门示例2(URL传参数的几种方式)
原文:thinkphp中URL传参数的几种方式 在thinkphp中,url传参合asp.net中原理类似,下面就单个参数和多个参数传递方式进行一个简单讲解 1.传单个参数 单个参数这种比较简单,例如 ...
- 013:URL传参数
URL传参数有两种方式: 1.采用在URL中使用变量的方式:在path的第一个参数中,使用'<参数名>'的方式可以传递参数,然后在对于的视图函数中也要写一个参数,并且视图函数中的参数名和U ...
- Vue-router 第5节 vue-router利用url传递参数
Vue-router 第5节 vue-router利用url传递参数 目录 Vue-router 第5节 vue-router利用url传递参数 第5节 vue-router利用url传递参数 冒号的 ...
- Tomcat应用中post方式传参数长度限制
Tomcat应用中post方式传参数长度限制 jsp页面上是没有限制的,但是在tomcat服务器上有限制,Tomcat 默认的post参数的最大大小为2M, 当超过时将会出错,可以配置maxPostS ...
- vue-router 利用url传递参数
vue-router 利用url传递参数 :冒号的形式传递参数 在路由配置文件里以:冒号的形式传递参数,这就是对参数的绑定. 1. 在配置文件里以冒号的形式设置参数.我们在/src/router/i ...
- 利用url传多个参数
刚开始接触jsp,比较偏向于用button标签的onclick方法进行页面的跳转.但是关于页面跳转的各种问题真是叫人头大,以下记录,仅仅为自己以后查看. Qone 用url传参的时候遇到中文怎么办 编 ...
- Cognos11中通过URL传参访问动态Report
一.需求: 在浏览器输入一个URL,在URL后面加上参数就可以访问一个有提示值的报表?比如下面的报表 二.解决办法 Cognos Model 查询主题设计层概要 Select * from [UCO ...
- js的form表单提交url传参数(包含+等特殊字符)的解决方法
方法一:(伪装form表单提交) linkredwin = function(A,B,C,D,E,F,G){ var formredwin = document.createElemen ...
随机推荐
- Javascript学习一
//学习moocjs1 JavaScript-警告(alert 消息对话框) <script type="text/javascript"> var mynum = 3 ...
- Android.mk模板(持续更新中)
此文列出Android.mk的常用模板(部分内容源于多篇他人博客,这里不具体指出),如有错漏,还请在评论中指出,后期持续更新 #链接第三方动态库,在和部分android源码的编译中验证不过 LOC ...
- vim编辑器的常见使用功能
Vim是一个类似于vi的著名的功能强大.高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性. 掌握简单的vim命令可以大大提高我们编辑文档效率,在装有vim编辑器的linux系统终端输入vim ...
- [.net 面向对象程序设计深入](24)实战设计模式——策略模式(行为型)
[.net 面向对象程序设计深入](24)实战设计模式——策略模式(行为型) 1,策略模式定义 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法独立于使用它 ...
- PHP命名空间的概念与使用
命名空间在其它编程语言中其名称不尽相同,但其核心慨念都是自定义一个存储空间.避免类名重复系统无法判断该执行哪一个类或是哪一个函数. 举例说明下.我先创建test这个文件夹在其当前目录下再创建一个ind ...
- 关于在链路聚合下做smart,monitor link的转发测试
关于在链路聚合下做smart,monitor link的转发测试 这次又要开始瞎折腾了.没事找事了.毕竟我还是很无聊的: 这个实验主要要涉及到以下几个方面: 1.gvrp的应用: 2.Smart Li ...
- linux 私房菜 CH6 Linux 的档案权限与目录配置
查看文件属性 ls -al 第一栏:类型与权限 d:目录: -:档案: l:链接档: b:可随机存取装置: c:一次性存取装置: 第二栏:有多少档名连结到此节点 第三栏:拥有者 第四栏:所属群组 第五 ...
- Android ORMLite 框架的入门用法
大家在Android项目中或多或少的都会使用数据库,为了提高我们的开发效率,当然少不了数据库ORM框架了,尤其是某些数据库操作特别频繁的app:本篇博客将详细介绍ORMLite的简易用法. 下面开始介 ...
- UML软件方法大纲
利用周末的时间读了潘加宇的<软件方法(上)>,希望梳理清楚UML的知识脉络: 工作流 子流程 内容 备注 建模和uml 利润=需求-设计 愿景 缺乏清晰.共享的愿景往往是项目失 ...
- GreenDao 工具类 --- 使用 Json 快速生成 Bean、表及其结构,"炒鸡"快!
作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...