是的,它可以改进。
例如,在 JSP 中呈现 URL,要在 portlet 中查看用户:
<portlet:renderURL windowState="maximized" var="myURL">
<portlet:param name="resourcePrimKey" value="<%=user.getUserId() %>" />
<portlet:param name="jspPage" value="/html/viewMyUser.jsp" />
</portlet:renderURL>
您可以在友好的 URL 路由中拥有友好的 URL 路由,如下所示:
<route>
<pattern>/satportlet/{resourcePrimKey:\d+}/view</pattern>
<!-- \d+ is the place-holder for the userID, i.e. 5 in the friendly URL below -->
<implicit-parameter name="p_p_lifecycle">0</implicit-parameter>
<!-- Implicit parameters are not shown in the route pattern, here 0,1 etc are the phases of the portlet 0=render, 1=action etc -->
<implicit-parameter name="p_p_state">maximized</implicit-parameter>
<implicit-parameter name="jspPage">/html/viewMyUser.jsp</implicit-parameter>
</route>
所以生成的友好 URL 将是:
http://localhost:8086/web/guest/home/-/Gasd/satportlet/5/view
在您查看生成的 URL 的情况下,您可以使用类似这样的 <route> 元素(如果给出了您在 JSP 中使用的 <portlet:actionURL> 或 <portlet:renderURL> 我认为这对构建 <route> 元素)。我不确定这是否完全正确,但它会是这样的:
<route>
<pattern>/satportlet/{p_auth}/{[p_p_id]_javax.portlet.action:\d+}</pattern>
<implicit-parameter name="p_p_lifecycle">1</implicit-parameter>
</route>
所以我猜(我再次不确定)使用上面的配置它应该生成友好的 URL:
http://localhost:8086/web/guest/home/-/Gasd/satportlet/EFAy7VSA/addBook
您还可以查看 liferay 的源代码和 *-friendly-url-routes.xml 文件以获得更好的理解。
希望这至少可以为您提供有关友好 URL 如何在 liferay 中工作的线索。