1

我正在使用liferay 6.1

我在 liferay-portet.xml 文件中添加了这个

<friendly-url-mapper-class>com.liferay.portal.kernel.portlet.DefaultFriendlyURLMapper</friendly-url-mapper-class>
<friendly-url-mapping>Gasd</friendly-url-mapping>
<friendly-url-routes>com/test/friendlier-friendly-url-routes.xml</friendly-url-routes>

根据上下文根(或 Portlet 名称),这是我更友好的 url-routes.xml

<routes>
<route>
    <pattern>/satportlet</pattern>
</route>
</routes>

但是当我执行提交操作时,该 Portlet 的 URL 仍然是这样的

http://localhost:8086/web/guest/home/-/Gasd/satportlet?p_auth=EFAy7VSA&p_p_lifecycle=1&_satportlet_WAR_SatPractportlet_javax.portlet.action=addBook

无论如何,这可以改进。

我对 Liferay 非常陌生,请给我建议,我已经准备好按照您的说法进行更改。

4

1 回答 1

2

是的,它可以改进。

例如,在 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 中工作的线索。

于 2012-04-16T10:55:07.147 回答