如何在 PrettyFaces 的帮助下将长的 Liferay URL 映射到友好的 URL?
Posted
技术标签:
【中文标题】如何在 PrettyFaces 的帮助下将长的 Liferay URL 映射到友好的 URL?【英文标题】:How to map a long Liferay URL to a friendly URL with help of PrettyFaces? 【发布时间】:2012-11-14 23:10:17 【问题描述】:我想使用 Liferay URL 映射,但目前 JSF 2 和 URL 映射存在错误,所以它不起作用 (http://issues.liferay.com/browse/FACES-257)。所以我改用 PrettyFaces。
我的问题是,您如何在 PrettyFaces 中映射类似的链接
localhost:8080/web/guest/wsw?p_auth=oPRD7ELs&p_p_id=KonakardPotrlets_WAR_KonakardPotrletsportlet&p_p_lifecycle=1&p_p_state=normal&p_p_mode=view&p_p_col_id=column-1&p_p_col_count=1&_KonakardPotrlets_WAR_KonakardPotrletsportlet__facesViewIdRender=%2Fviews%2Fwizard.xhtml
这样的?
localhost:8080/web/guest/wsw/views/wizard/id=2
注意:我还需要生成一个新参数id
,它是在一个bean中设置的。
【问题讨论】:
【参考方案1】:FACES-257 早就修复了。你应该使用Liferay Friendly URLs。
在src/main/resources/
下创建一个friendly-url-routes.xml
文件:
<?xml version="1.0"?>
<!DOCTYPE routes PUBLIC "-//Liferay//DTD Friendly URL Routes 7.0.0//EN" "http://www.liferay.com/dtd/liferay-friendly-url-routes_7_0_0.dtd">
<routes>
<route>
<pattern>/views/viewName/id=my_id</pattern>
<generated-parameter name="_facesViewIdRender">/WEB-INF/views/viewName.xhtml</generated-parameter>
<implicit-parameter name="p_p_lifecycle">0</implicit-parameter>
<implicit-parameter name="p_p_mode">view</implicit-parameter>
<implicit-parameter name="p_p_state">normal</implicit-parameter>
</route>
</routes>
您还需要将以下配置添加到 liferay-portlet.xml
的 <portlet>
部分:
<friendly-url-mapper-class>com.liferay.portal.kernel.portlet.DefaultFriendlyURLMapper</friendly-url-mapper-class>
<friendly-url-mapping>my-portlet</friendly-url-mapping>
<friendly-url-routes>friendly-url-routes.xml</friendly-url-routes>
网址将是:
localhost:8080/web/guest/wsw/-/my-portlet/views/wizard/id=2
【讨论】:
以上是关于如何在 PrettyFaces 的帮助下将长的 Liferay URL 映射到友好的 URL?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 C 将长值(32 位)拆分为四个 char 变量(8 位)?