5

JSR-268 ポートレットの liferay でフレンドリ URL を有効にしたいと考えていました。

http://www.liferay.com/web/guest/community/wiki/-/wiki/Main/FriendlyURLMapperで言われたように、フレンドリーな URL マッパーを構成しましたが、どういうわけかこれはうまくいきません。

私は何が欠けていますか?

liferay-portlet.xmlはこのように見えます:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 6.1.0//EN"     "http://www.liferay.com/dtd/liferay-portlet-app_6_1_0.dtd">
<liferay-portlet-app>
<portlet>
    <portlet-name>content</portlet-name>
    <friendly-url-mapper-class>com.liferay.portal.kernel.portlet.DefaultFriendlyURLMapper</friendly-url-mapper-class>
    <friendly-url-mapping>content</friendly-url-mapping>
    <friendly-url-routes>com/gentics/cr/portlet/content-url-routes.xml</friendly-url-routes>
    <instanceable>true</instanceable>
</portlet>
<portlet>
    <portlet-name>navigation</portlet-name>
    <icon>/icon.png</icon>
    <instanceable>true</instanceable>
</portlet>
<portlet>
    <portlet-name>search</portlet-name>
    <icon>/icon.png</icon>
    <instanceable>true</instanceable>
    <!-- header-portlet-css>/css/test.css</header-portlet-css>
    <footer-portlet-javascript>/js/test.js</footer-portlet-javascript-->
</portlet>
<!--role-mapper>
    <role-name>administrator</role-name>
    <role-link>Administrator</role-link>
</role-mapper>
<role-mapper>
    <role-name>guest</role-name>
    <role-link>Guest</role-link>
</role-mapper>
<role-mapper>
    <role-name>power-user</role-name>
    <role-link>Power User</role-link>
</role-mapper>
<role-mapper>
    <role-name>user</role-name>
    <role-link>User</role-link>
</role-mapper-->
</liferay-portlet-app>

content-url-routes.xmlはこのように見えます:

<?xml version="1.0"?>
<!DOCTYPE routes PUBLIC "-//Liferay//DTD Friendly URL Routes 6.0.0//EN" "http://www.liferay.com/dtd/liferay-friendly-url-routes_6_0_0.dtd">

<routes>
<route>
    <pattern>/content/{contentid}</pattern>
</route>
<!-- route>
    <pattern>/{instanceId}/search/{filter}</pattern>
    <implicit-parameter name="do">search</implicit-parameter>
</route>
<route>
    <pattern>/{instanceId}/search/{filter}/{start}</pattern>
    <implicit-parameter name="do">search</implicit-parameter>
</route-->
</routes>

ポートレットに表示される URL は次のとおりです。http://localhost:8080/web/guest/home?p_auth=Yu81QQrj&p_p_id=content_WAR_genticsportlet_INSTANCE_R2HSaoL5RkHi&p_p_lifecycle=1&p_p_state=normal&p_p_mode=view&p_p_col_id=column-2&p_p_col_count=1&_content_WAR_genticsportlet_INSTANCE_R2HSaoL5RkHi_contentid=10007.33

URL は、次のコードを使用して作成されました。

PortletURL actionURL = response.createActionURL();
actionURL.setParameter("contentid", "10007.33");

正しい方向に向けていただければ幸いです...

4

3 に答える 3

4

ルートは、生成された URL の一部であるため、後contentの部分から開始する必要があります。content<friendly-url-mapping>content</friendly-url-mapping>はそのために使用されます。

<route>
    <pattern>/{contentid}</pattern>
</route>

また、DTD を最新のものに変更してください*-url-routes.xml

<!DOCTYPE routes PUBLIC "-//Liferay//DTD Friendly URL Routes 6.1.0//EN" "http://www.liferay.com/dtd/liferay-friendly-url-routes_6_1_0.dtd">
于 2012-04-04T14:48:25.987 に答える
3

Adarshr の回答に続いて、DefaultFriendlyURLMapper を拡張し、メソッド isCheckMappingWithPrefix をオーバーライドする独自のクラスを作成して、/-/ 部分を取り除くこともできるので、次のようになります。

@Override
public boolean isCheckMappingWithPrefix() {     
    return false;
}

したがって、URL はhttp://community_name.com/web/group_name/page_name/content/contentId. 次に、 Friendly-url-mapper-class タグでクラスを設定します。GitHub のこのポートレット プロジェクトで例を確認できます。

https://github.com/DevJonny/Liferay-6-Friendlier-Friendly-URL-Mapper

~~ 編集 ~~

古いリンクが機能しないことを指摘してくれた Prakash に感謝します。

于 2012-04-05T07:21:35.073 に答える
0

を使用して、p_auth と javax.portlet.action を除くすべてのパラメーターを削除することができました。

<pattern>/myportlet</pattern>
<ignored-parameter name="p_p_lifecycle" />
<ignored-parameter name="p_p_state" />
<ignored-parameter name="p_p_mode" />

ライフサイクル、状態、モードが URL から消えます。ただし、p_auth と残りの URL を削除する方法はありません。

于 2012-05-24T10:06:12.797 に答える