说明:以下内容和官方文档相差不大,如果您英文较好,建议直接去读官方文档,地址是:https://dev.liferay.com/develop/tutorials/-/knowledge_base/6-1/adding-friendly-url-mapping-to-the-portlet。如果没有操作成功,再回来看一看,相信您会有所收获。

  如果我们要在liferay中跳转到一个jsp界面。我们可能会这样写

<portlet:renderURL var="editGreetingURL">
<portlet:param name="mvcPath" value="XXX" />
</portlet:renderURL>
<a href="<%= editGreetingURL %>">跳转到jsp界面</a>

  其中XXX表示我们要跳转的jsp界面的全路径,比如:/html/portlet3/view.jsp。

  这个时候它的url路径是类似于这样的:

http://localhost:8080/zh/web/guest/what-we-do?p_p_id=portlet3_WAR_testPortletportlet&p_p_lifecycle=0&p_p_state=normal&p_p_mode=view&p_p_col_id=column-1&p_p_col_pos=1&p_p_col_count=4&_portlet3_WAR_testPortletportlet_mvcPath=%2Fhtml%2Fportlet3%2Fedit.jsp

  这样的路径又臭又长,而且也看不懂什么意思,那么能不能把它变得好看一点呢?肯定是能的,可以把它变成类似于下面的形式:

  http://localhost:8080/zh/web/guest/what-we-do/-/portlet3/view

接下来我们一起来把它改造一下:

  1. 新建一个Portlet,名称为Portlet3

  2. 在liferay-portlet.xml文件中找到Portlet3对应的代码,在  </icon>标签后面并且在<instanceable>标签前面加上以下内容:

<friendly-url-mapper-class>com.liferay.portal.kernel.portlet.DefaultFriendlyURLMapper</friendly-url-mapper-class>
<friendly-url-mapping>portlet3</friendly-url-mapping>
<friendly-url-routes>com/liferay/samples/portlet3-url-routes.xml</friendly-url-routes>

  3. 新建文件portlet3-url-routes.xml,全路径为:  /WEB-INF/src/com/liferay/samples/portlet3-url-routes.xml ,文件内容如下。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE routes PUBLIC "-//Liferay//DTD Friendly URL Routes 6.1.0//EN"
"http://www.liferay.com/dtd/liferay-friendly-url-routes_6_1_0.dtd"> <routes>
<route>
<pattern>/{mvcPathName}</pattern>
<generated-parameter name="mvcPath">/html/portlet3/{mvcPathName}.jsp</generated-parameter>
</route>
</routes>

    注意:

        1)文件的全路径要和第二步中<friendly-url-routes>标签的内容对应。

        2)把<generated-parameter>标签的内容替换成您要跳转的jsp页面的全路径。以“/”开头,代表当前项目。

  4. 重新部署您的portlet,刷新页面,并再次尝试如下的链接是。

http://localhost:8080/zh/web/guest/what-we-do/-/portlet3/view

http://localhost:8080/zh/web/guest/what-we-do/-/portlet3/edit

     效果如下

         

解析:

  1. http://localhost:8080/zh/web/guest/what-we-do/-/portlet3/view 中的what-we-do要和当前页面对应(空格可以使用-来代替)。portlet3和liferay-portlet.xml中的<friendly-url-mapping>里面的内容对应。Edit要和jsp文件名称对应。
  2. portlet3-url-routes.xml中类似于RESTFUL风格。
  3. liferay对于 http://localhost:8080/zh/web/guest/what-we-do/-/portlet3/view 路径的寻找过程如下:
      先是what-we-do找到页面,然后寻找liferay-portlet.xml文件中<friendly-url-mapping>是portlet3的元素,找出对应的<friendly-url-routes>标签的内容:com/liferay/samples/portlet3-url-routes.xml,然后寻找对应的xml文件,在把xml文件中的{ mvcPathName }替换成view,然后去寻找/html/portlet3/view.jsp。找到具体的jsp文件。

Liferay6.1 配置友好的URL映射的更多相关文章

  1. 2-字符串模拟- URL映射

    问题描述 试题编号: 201803-3 试题名称: URL映射 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 URL 映射是诸如 Django.Ruby on Rails 等 ...

  2. CCF 201803-3 URL映射

    CCF 201803-3  URL映射 试题编号: 201803-3 试题名称: URL映射 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 URL 映射是诸如 Django. ...

  3. 201803-3 URL映射

    问题描述 URL 映射是诸如 Django.Ruby on Rails 等网页框架 (web frameworks) 的一个重要组件.对于从浏览器发来的 HTTP 请求,URL 映射模块会解析请求中的 ...

  4. url映射 ccf (Java正则表达式80分解法)

    问题描述 试题编号: 201803-3 试题名称: URL映射 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 URL 映射是诸如 Django.Ruby on Rails 等 ...

  5. 应用springMVC时如果配置URL映射时如下配置

    应用springMVC时如果配置URL映射时如下配置 [html] view plaincopy<servlet> <servlet-name>appServlet</s ...

  6. Django - 将URL映射到视图

    URLconf 就像是 Django 所支撑网站的目录.它的本质是 URL 模式以及要为该 URL 模式调用的视图函数之间的映射表.你就是以这种方式告诉 Django,对于这个 URL 调用这段代码, ...

  7. ASP.NET MVC 5 Web编程2 -- URL映射(路由原理)

    本章将讲述ASP.NET MVC5 的路由原理,即URL映射机制. 简单点就是解释:为什么MVC在浏览器输入地址就能访问到类(或类中的方法)?这是怎么做到的?我自己可以通过.NET写出一个自己的MVC ...

  8. urlMappings与URL映射

    此配置节的作用就是往Web程序中添加URL的映射,从而达到用户访问映射后的URL(如/Page/AAA)也能访问到源URL(如/Page/PageAAA.aspx)的效果.这也是URL映射本来的作用. ...

  9. django中“url映射规则”和“服务端响应顺序”

    1.django搜索路径 使用 import 语句时,Python 所查找的系统目录清单.      查看方式:         import sys        print sys.path   ...

随机推荐

  1. FZU Problem 2062 Suneast &amp; Yayamao

    http://acm.fzu.edu.cn/problem.php?pid=2062 标题效果: 给你一个数n,要求求出用多少个数字能够表示1~n的全部数. 思路: 分解为二进制. 对于一个数n.看它 ...

  2. 自己动手编写一个VS插件(七)

    作者:朱金灿 来源:http://blog.csdn.net/clever101 继续开发VS插件.今天在添加ATL控件时出现一个"未能返回新代码元素"的错误,如下图: 解决办法是 ...

  3. 比较实时分布式搜索引擎(senseidb、Solr、elasticsearch)

    1.它们是基于lucene的. 2.它们分布:sensedb它是multi-write;Solr的shards它是master-slave状态.基于pull策略:elasticsearch的shard ...

  4. win10系统应用打不开

    可能有一些用户升级Win10之后遇到了应用商店.应用打不开或闪退的问题,此时可尝试通过下面的一些方法来解决. 1.点击任务栏的搜索(Cortana小娜)图标,输入Powershell,在搜索结果中右键 ...

  5. WPF党旗和国徽!

    原文:WPF党旗和国徽! 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/yangyisen0713/article/details/18087007 ...

  6. Matlab随笔之矩阵入门知识

    原文:Matlab随笔之矩阵入门知识 直接输入法创建矩阵 – 矩阵的所有元素必须放在方括号“[ ]”内: – 矩阵列元素之间必须用逗号“,”或空格隔开,每行必须用“;”隔开 – 矩阵元素可以是任何不含 ...

  7. Centos下一个server安装的版本号mysql

    首先这里说的是这里的路径.以及语句都是在网上看了非常多错误后自己实践后改动过来的,希望对大家实用. 这里在安装的时候要按着我的这个顺序.否则可能会由于路径错误而找不到对应的指令. 一.安装cmake ...

  8. XF 滑块和步进控件

    <?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http:/ ...

  9. Selenium-基础操作

    一.测试代码 @Test public void test() { WebDriver driver = new FirefoxDriver(); // 打开当前包中的index页面 driver.g ...

  10. 虚拟机安装的kali无法识别本机物联网卡

    http://blog.csdn.net/sb985/article/details/76427624