说明:以下内容和官方文档相差不大,如果您英文较好,建议直接去读官方文档,地址是: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. vue: 关于多路由公用模板,导致组件内数组缓存问题

    当多个路由复用同一个模板,此时在这几个路由间切换,模板并不会重新挂载.针对这个情况,我们需要在当前逻辑内对路由做监听,在发生变化时更新对应属性,已满足需求. 但是,在实现的过程中会遇到如下情况: 如图 ...

  2. win7 UAC bypass(微软已经给予了三组组件绕过UAC启动的特权)

    fireworm同学的翻译: 原文在http://www.pretentiousname.com/misc/win7_uac_whitelist2.html我只翻译了其中关于原理的一小部分,有兴趣的可 ...

  3. WPF 控制程序只能启动一次

    原文:WPF 控制程序只能启动一次 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/jsyhello/article/details/7411898 ...

  4. VS中实时获取SVN的版本号并写入到AssemblyInfo.cs中(C#)

    原文:VS中实时获取SVN的版本号并写入到AssemblyInfo.cs中(C#) 在开发项目时,需要知道当前发布的到底是哪个版本,比较好的方式就是获取SVN的版本来作为项目的版本.项目版本一般由主版 ...

  5. 关于C#你应该知道的2000件事

    原文 关于C#你应该知道的2000件事 下面列出了迄今为止你应该了解的关于C#博客的2000件事的所有帖子. 帖子总数= 1,219 大会 #11 -检查IL使用程序Ildasm.exe d #179 ...

  6. XF 主从页面

    using System; using Xamarin.Forms; using Xamarin.Forms.Xaml; [assembly: XamlCompilation (XamlCompila ...

  7. jquery好友面板切换

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  8. MeasureOverride 和 ArrangeOverride

    原文:MeasureOverride 和 ArrangeOverride FrameworkElement.MeasureOverride方法实现当在派生类中重写时,测量子元素在布局中所需的大小,然后 ...

  9. SQL Server 数据库所有表增加同一列

    SET @COLUMN_NAME = 'ColumnNameYouWantToAdd'; SET @COLUMN_DATATYPE = 'DataTypeOfColumn'; ------------ ...

  10. 线程间操作无效: 从不是创建控件“labMessage”的线程访问它。

    解决方法:1.在窗体加载时加上这一句 private void FormDate_Load(object sender, EventArgs e) { Control.CheckForIllegalC ...