业务场景:现在有一个新闻系统,有两个页面,A是新闻列表页面/web/guest/home,B是新闻的详情页面/web/guest/newsview。

业务逻辑为:在A页面中,点击新闻的标题进入B页面,在B页面的展现相应的新闻详情。

解决方案:此类场景可以使用URL传递参数。

URL传递参数与传统web一样。形式是:/web/hqw/newsview?id=XXX。

我们只来实现一个小例子,与上面的场景基本一致。

  1. 首先我们先要在插件工程中创建两个Portlet,一个是Portlet1(表示新闻列表的portlet),一个是News(表示新闻详情的portlet)。
  2. 新建一个页面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传参数的更多相关文章

  1. thinkphp中URL传参数的几种方式

    在thinkphp中,url传参合asp.net中原理类似,下面就单个参数和多个参数传递方式进行一个简单讲解 1.传单个参数 单个参数这种比较简单,例如 想像edit操作里面传递一个id值,如下写法_ ...

  2. thinkphp 3.2.3 入门示例2(URL传参数的几种方式)

    原文:thinkphp中URL传参数的几种方式 在thinkphp中,url传参合asp.net中原理类似,下面就单个参数和多个参数传递方式进行一个简单讲解 1.传单个参数 单个参数这种比较简单,例如 ...

  3. 013:URL传参数

    URL传参数有两种方式: 1.采用在URL中使用变量的方式:在path的第一个参数中,使用'<参数名>'的方式可以传递参数,然后在对于的视图函数中也要写一个参数,并且视图函数中的参数名和U ...

  4. Vue-router 第5节 vue-router利用url传递参数

    Vue-router 第5节 vue-router利用url传递参数 目录 Vue-router 第5节 vue-router利用url传递参数 第5节 vue-router利用url传递参数 冒号的 ...

  5. Tomcat应用中post方式传参数长度限制

    Tomcat应用中post方式传参数长度限制 jsp页面上是没有限制的,但是在tomcat服务器上有限制,Tomcat 默认的post参数的最大大小为2M, 当超过时将会出错,可以配置maxPostS ...

  6. vue-router 利用url传递参数

    vue-router 利用url传递参数 :冒号的形式传递参数  在路由配置文件里以:冒号的形式传递参数,这就是对参数的绑定. 1. 在配置文件里以冒号的形式设置参数.我们在/src/router/i ...

  7. 利用url传多个参数

    刚开始接触jsp,比较偏向于用button标签的onclick方法进行页面的跳转.但是关于页面跳转的各种问题真是叫人头大,以下记录,仅仅为自己以后查看. Qone 用url传参的时候遇到中文怎么办 编 ...

  8. Cognos11中通过URL传参访问动态Report

    一.需求: 在浏览器输入一个URL,在URL后面加上参数就可以访问一个有提示值的报表?比如下面的报表 二.解决办法 Cognos  Model 查询主题设计层概要 Select * from [UCO ...

  9. js的form表单提交url传参数(包含+等特殊字符)的解决方法

    方法一:(伪装form表单提交) linkredwin = function(A,B,C,D,E,F,G){        var formredwin = document.createElemen ...

随机推荐

  1. react搭配amazeui环境搭建

    1.安装node https://nodejs.org/en/download/ 查看node   npm版本 2.安装react 创建新的react单页面应用 npm install  -g cre ...

  2. SpringMVC4+MyBatis3+SQLServer 2014 整合(包括增删改查分页)

    前言 说起整合自然离开ssm,我本身并不太喜欢ORM,尤其是MyBatis,把SQL语句写在xml里,尤其是大SQL,可读性不高,出错也不容易排查. 开发环境 idea2016.SpringMVC4. ...

  3. 每天一个Linux命令(01)--ls命令

    ls命令是Linux下最常用的命令.ls命令就是list的缩写,缺省下ls用来打印当前目录的清单,如果ls指定其他目录,那么就会显示指定目录里的文件及文件夹清单.通过ls命令不仅可以查看Linux文件 ...

  4. 1. Two Sum★

    题目内容:Given an array of integers, return indices of the two numbers such that they add up to a specif ...

  5. ceph-deploy install时,远端节点在执行apt-get update命令时失败

    环境 OS:Ubuntu 16.04 背景 使用ceph-deploy部署Ceph集群,调用ceph-deploy install命令在远端节点安装ceph环境,执行apt-get update命令时 ...

  6. 简单聊聊TestNG中的并发

    前言 最近在做项目里的自动化测试工作,使用的是TestNG测试框架,主要涉及的测试类型有接口测试以及基于业务实际场景的场景化测试.由于涉及的场景大多都是大数据的作业开发及执行(如MapReduce.S ...

  7. Objective-c日记-之属性列表

    属性列表 1,概述 在Cocoa中,有一类名为属性列表的对象(常简写为plist),Cocoa知道如何将它们保存到文件和从文件中加载.包括以下类NSArray,NSDictionary,NSStrin ...

  8. ViewPager详解

    一.ViewPager简介 ViewPager 如其名所述,是负责翻页的一个 View.准确说是一个 ViewGrop,包含多个 View 页,在手指横向滑动屏幕时,其负责对 View 进行切换.为了 ...

  9. Vuex 模块化实现待办事项的状态管理

    前言 在vue里,组件之间的作用域是独立的,父组件跟子组件之间的通讯可以通过prop属性来传参,但是在兄弟组件之间通讯就比较麻烦了.比如A组件要告诉一件事给B组件,那么A就要先告诉他们的爸组件,然后爸 ...

  10. python + selenium <三>

    sql 数据库连接 引用pymssql模块 import pymssqldef getDB(name,psw,dbname,sql): conn=pymssql.connect(HOST=host,N ...