Ich wollte freundliche URLs in Liferay für meine JSR-268 Portlets ermöglichen.Holen Sie sich freundliche URLs in Liferay zu arbeiten
Ich konfigurierte den freundlichen URL-Mapper, wie ich in http://www.liferay.com/web/guest/community/wiki/-/wiki/Main/FriendlyURLMapper gesagt wurde, aber irgendwie funktioniert das nicht für mich.
Was fehlt mir?
Mein liferay-portlet.xml
sieht wie folgt aus:
<?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>
Meine content-url-routes.xml
wie folgt aussieht:
<?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>
Die im Portlet gemacht Urls ist nach wie vor: 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
Die URL erstellt wurde Verwenden Sie den folgenden Code:
PortletURL actionURL = response.createActionURL();
actionURL.setParameter("contentid", "10007.33");
Es wäre sehr schön, wenn du mich in die richtige Richtung ...
zeigen könnte
Ich habe gerade versucht, dass ... aber es funktioniert immer noch nicht. Ich gehe davon aus, dass das URL-Mapping auf beide Arten funktioniert: Die URLs im Content sollten bereits als freundliche URLs gerendert werden ... oder? Könnte es auch ein Problem mit der instanceid/instantable geben? – csupnig
Ich hatte genau diesen Zweifel, als ich gestern damit begann, freundliche URLs zu erkunden. Nach viel Debugging stellt sich heraus, dass es funktioniert. Ich habe einen generischen '/ ' hinzugefügt, um es zum Laufen zu bringen. Versuchen Sie es mit instanceable = false, um 'instanceid'-Probleme auszuschließen. –
adarshr
Danke ... der generische/ hat zumindest etwas verändert. Jetzt sieht meine URL wie folgt aus: http: // localhost: 8080/web/gast/home/-/content /? P_auth = Yu81QQrj & p_p_lifecycle = 1 & _content_WAR_genticsportlet_INSTANCE_R2HSao5RkHi_contentid = 10007.34 Ich setze auch instanceable auf false, aber ich bekomme immer noch den INSTANCE_R2 ... im Parameter contentid :/Ich muss wahrscheinlich nur ein bisschen herumspielen. –
csupnig