0

我已经成功地为我的几个自定义 portlet 实现了友好 URL,它工作正常。

生成可点击链接时,它会正确显示友好网址。

现在我的要求是,我需要将此渲染 URL(例如URL01)作为参数(param02)发送到另一个 URL(URL02),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将打开一个弹出窗口,并URL01在 JSP 中显示如下:

URL: <%= ParamUtil.getString(request, "URL01") %>

但这显示URL01(unfriendly-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

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

<a href="http://localhost:8080/web/guest/mypage/-/mine/10989/This+is+miine/What+name/maximized"> Click me! </a>

所以我需要一个可以将我的 unfriendly-url 转换为friendly-URL 的实用程序,就像String传递了一个 unfriendly-url 一样 - 它会将其转换为上面显示的friendly-url。

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

编辑:

<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>

是的,URL01它写URL02在 JSP 的上方。

4

1 回答 1

0

我认为您可以创建自己的,当您创建带有标记<portlet-url-class>的 portlet URL 时将使用它。<portlet:renderURL>

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

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

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

于 2013-03-01T18:13:20.500 回答