Forums

Home » Liferay Portal » Deutsch

Combination View Flat View Tree View
Threads [ Previous | Next ]
toggle
Lennart Kruse
Problem mit Deeplinks/"Friendly URLs" in 6.0
May 31, 2012 2:24 AM
Answer

Lennart Kruse

Rank: New Member

Posts: 7

Join Date: May 31, 2012

Recent Posts

Hi alle,

ich habe ein Problem mit Deeplinking, und zwar kann ich Parameter des Deeplinks nicht auslesen.

Ich habe mich im Wesentlichen an dem Buch "The Official Guide to Liferay Portal Developement - Liferay in Action" (Richard Sezov) und folgendem Link orientiert: http://www.liferay.com/community/wiki/-/wiki/Main/FriendlyURLMapper. Mein Vorgehen wurde mir von einem externen technischen Dienstleister als "exakt korrekt" für Liferay 6.1 bestätigt – was ich nicht verifizieren kann, was mich aber zu der Vermutung führt, dass das in 6.0 (EE SP 2, Build 6012) anders funktioniert? Der Link spricht von 6.0.3; ich vermute, dass ich 6.0.12 habe (?), das sollte also klappen?

Im Detail:

In der liferay-portlet.xml definiere ich
<friendly-url-mapper-class>com.liferay.portal.kernel.portlet.DefaultFriendlyURLMapper</friendly-url-mapper-class>
<friendly-url-mapping>cui</friendly-url-mapping>
<friendly-url-routes>com/acme/foobar/cui/portlet/cui-friendly-url-routes.xml</friendly-url-routes>
Damit kann ich die URL
http://localhost:8080/web/guest/foobar/-/cui
aufrufen. Die Einträge scheinen korrekt: Wenn ich das mapping entferne/ändere, geht die URL nicht mehr; wenn ich die routes entferne/ändere, bekomme ich eine Exception beim Deployment des Portlets. Das sagt mir, dass die Einträge korrekt sind, und die richtige routes-XML verwendet wird.

In der routes-XML habe ich verschiedene Mappings ausprobiert; zuletzt einfach
<route>
<pattern>/posting/{uid:\d+}</pattern>
</route>
Aber auch verschiedene Kombinationen von "implicit-parameter". Die Idee dabei ist, aus einer URL wie
http://localhost:8080/web/guest/foobar/-/cui/posting/123
das "123" als "uid" an das Portlet zu übergeben.

Im Portlet versuche ich verschiedenes, um an die Parameter zu kommen:
System.out.println( "----> " + ((RenderRequest)request).getParameter("uid") );
System.out.println( "----> " + ((RenderRequest)request).getAttribute("uid") );
System.out.println( "PPM => " + ((RenderRequest)request).getPublicParameterMap());
System.out.println( "--> " + request.getParameterMap().size() );
Das ergibt die Ausgabe:
----> null
----> null
PPM => {}
--> 0

Was mache ich falsch? Ich vermute, dass entweder die route nicht getriggert wird, oder ich die Parameter nicht auf die korrekte Art und Weise auslese. Aber vermutlich ersteres... oder doch ein Bug?

Vielen Dank, und viele Grüße,
Lennart
Lennart Kruse
RE: Problem mit Deeplinks/"Friendly URLs" in 6.0
May 31, 2012 8:21 AM
Answer

Lennart Kruse

Rank: New Member

Posts: 7

Join Date: May 31, 2012

Recent Posts

Wie seht ihr das: Ist eine so rudimentäre Route gültig? Oder fehlt schon da was Elementares? Greife ich auf die vermeintlich übergebenen Parameter wirklich mit getParameter() zu?
Lennart Kruse
RE: Problem mit Deeplinks/"Friendly URLs" in 6.0
June 1, 2012 1:06 AM
Answer

Lennart Kruse

Rank: New Member

Posts: 7

Join Date: May 31, 2012

Recent Posts

OK, mit 6.1 funktioniert das so auch nicht emoticon ich recherchiere weiter!
Lennart Kruse
RE: Problem mit Deeplinks/"Friendly URLs" in 6.0
June 1, 2012 1:32 AM
Answer

Lennart Kruse

Rank: New Member

Posts: 7

Join Date: May 31, 2012

Recent Posts

Auf stackoverflow wird empfohlen, die route
<route>
<pattern>/</pattern>
</route>

einzurichten. Das führt immerhin schon mal dazu, dass createRenderURL() eine korrekte "friendly URL" ausgibt (dem war vorher nicht so, was ich für irrelevant hielt). Diese Route scheint also wichtig zu sein. Allerdings kann ich Parameter an der URL immer noch nicht auslesen
Lennart Kruse
RE: Problem mit Deeplinks/"Friendly URLs" in 6.0
June 4, 2012 5:50 AM
Answer

Lennart Kruse

Rank: New Member

Posts: 7

Join Date: May 31, 2012

Recent Posts

OK, das funktioniert offenbar nicht zuverlässig.

Habe das jetzt aufgegeben, und verwende GET-Parameter:
HttpServletRequest httpServletRequest = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(renderRequest));
System.out.println(httpServletRequest.getParameter("uid"));
Lennart Kruse
RE: Problem mit Deeplinks/"Friendly URLs" in 6.0
June 5, 2012 1:20 AM
Answer

Lennart Kruse

Rank: New Member

Posts: 7

Join Date: May 31, 2012

Recent Posts

Auf der Liveumgebung funktioniert das *offenbar*. Das ist eine wichtige Erkenntnis, denn das sagt mir, dass Liferay/Tomcat ein Problem mit entweder Windows (64 Bit) oder der Javaversion da hat. Die Liveumgebung ist ein Linux