我已经为我的一些自定义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
之上。
答案 0 :(得分:0)
我认为您可以创建自己的<portlet-url-class>
,并在使用<portlet:renderURL>
标记创建portlet网址时使用它。
在liferay-portlet.xml
中,您可以定义<portlet-url-class>
条目。
如果您检查PortletResponseImpl.java
的源代码,方法createLiferayPortletURL()
将检查该portlet的PortletURLGenerationListener
。
我认为,你可以创建一个并根据需要修改URL。