如何将门户网站URL转换为其相应的友好URL

时间:2013-02-25 11:35:48

标签: liferay liferay-6 friendly-url

我已经为我的一些自定义portlet成功实现了friendly-url,并且工作正常。

生成可点击链接时,它会正确显示friendly-url。

现在我的要求是,我需要将此渲染网址(比如URL01)作为参数(param02)发送到另一个网址(URL02)和此{{1然后会显示在另一个页面上。

这是生成URL01的方式:

URL01

这是生成<portlet:renderURL var="URL01" windowState="<%=WindowState.MAXIMIZED.toString() %>"> <portlet:param name="redirect" value="<%= currentURL %>" /> <portlet:param name="myId" value="<%= String.valueOf(myObject.getMyId()) %>" /> <portlet:param name="title" value="<%= myObject.getTitle() %>" /> <portlet:param name="name" value="<%= myObject.getName() %>" /> </portlet:renderURL> 的方式

URL02

<portlet:renderURL var="URL02" windowState="<%= LiferayWindowState.POP_UP.toString() %>"> <portlet:param name="redirect" value="<%= currentURL %>" /> <portlet:param name="URL01" value="<%=URL01 %>" /> <portlet:param name="ownerId" value="<%= String.valueOf(ownerId) %>" /> <portlet:param name="groupId" value="<%= String.valueOf(scopeGroupId) %>" /> </portlet:renderURL> 将打开一个弹出窗口,URL02将在JSP中显示如下:

URL01

但是这显示URL: <%= ParamUtil.getString(request, "URL01") %> (不友好的网址)为:

URL01

如果这是一个可点击的链接,它会完美地生成(友好的URL):

URL: http://localhost:8080/web/guest/mypage?p_p_id=my_WAR_myportlet&p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view&_my_WAR_myportlet_myId=10989&_my_WAR_myportlet_title=This+is+miine&my_WAR_myportlet_name=What+name

所以我需要一个可以将我的不友好网址转换为友好网址的实用程序,就像传递了一个不友好的网址<a href="http://localhost:8080/web/guest/mypage/-/mine/10989/This+is+miine/What+name/maximized"> Click me! </a> 一样 - 它会将其转换为上面显示的友好网址。

或者我必须创建自己的实现来实现这个目标?

修改

String

是的,<route> <pattern>/{myId:\d+}/{title:.+}/{name:.+}/{p_p_state}</pattern> <ignored-parameter name="redirect" /> <implicit-parameter name="p_p_id">my_WAR_myportlet</implicit-parameter> <implicit-parameter name="p_p_lifecycle">0</implicit-parameter> <implicit-parameter name="p_p_mode">view</implicit-parameter> </route> 写在JSP中的URL01之上。

1 个答案:

答案 0 :(得分:0)

我认为您可以创建自己的<portlet-url-class>,并在使用<portlet:renderURL>标记创建portlet网址时使用它。

liferay-portlet.xml中,您可以定义<portlet-url-class>条目。

如果您检查PortletResponseImpl.java的源代码,方法createLiferayPortletURL()将检查该portlet的PortletURLGenerationListener

我认为,你可以创建一个并根据需要修改URL。