如何在 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&lt;portlet&gt; 部分:

<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?的主要内容,如果未能解决你的问题,请参考以下文章

将长整数列表转换为整数

将长的 Unix 纪元时间戳转换为实际日期/时间

如何使用 C 将长值(32 位)拆分为四个 char 变量(8 位)?

JSF 和 PrettyFaces - 如何限制直接 xhtml 请求

将长位数组映射到查找表

JSF2 和 PrettyFaces...如何获取原始 URL 或查询字符串?