カスタム ポートレットのいくつかにフレンドリー URL を正常に実装しましたが、正常に動作しています。
クリック可能なリンクが生成されると、わかりやすい URL が正しく表示されます。
ここで私の要件は、この render-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>
したがって、非友好的なURLが渡された場合のように、非友好的なURLを友好的なURLに変換できるユーティリティが必要ですString
-それは上記の友好的な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>
そして、はい、JSPURL01
の上に書かれています。URL02