我正在使用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>
根据COntext根目录(或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非常陌生,请建议我,我准备好你提到的chnages。
答案 0 :(得分: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>
您可以在friendlylier-friendly-url-routes.xml中拥有友好的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
在查看生成的网址的情况下,您可以使用&lt; route&gt;像这样的元素(如果你在JSP中使用的&lt; portlet:actionURL&gt;或&lt; portlet:renderURL&gt;)我认为构建&lt; route&gt;元素会有点帮助。 我不确定这是否完全正确但是会是这样的:
<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中工作的线索。