Questions & Answers

Annika
I'm new here

no target selected - Undefined field 'getUrl'!

Hallo zusammen,

seit einer Woche arbeite ich nun frisch in einem unserer FirstSpirit Projekte und kรผmmere mich gerade darum die Generierungsfehler zu analysieren und zu beheben um mich in das Projekt einzuarbeiten.

Einer der Fehler bereitet mir jedoch Kopfzerbrechen und da alle meine Kollegen ausgefallen sind, kann ich mich aktuell mit Niemandem direkt austauschen.

Ich bekomme den allseits bekannten Fehler:
ERROR 13.02.2019 10:37:17.962{g-node=619051} (de.espirit.firstspirit.generate.SiteProduction): no target selected


An dieser Stelle sollte es vermutlich eine Referenz geben, die ins Leere fรผhrt. Durch das Templatedebugging $CMS_SET(#global.debugMode,true)$ habe ich die exakte Position bestimmen kรถnnen.

$CMS_SET(set_ft_refUrl, ref(paramRef, abs:2, lang:if( !paramLang.isEmpty, paramLang, #global.language.abbreviation)).getUrl)$

รผber einige Debug-Ausgaben weiรŸ ich aber auch, dass die Methoden valide Ergebnisse zurรผckliefern:

$CMS_SET(anha, "ANHA Logolink: " +

map_ps_areaprojectsettings.logoLink.get() +

"lang: " +

if(!paramLang.isEmpty,paramLang,#global.language.abbreviation) +

"just ref: " +

ref(map_ps_areaprojectsettings.logoLink.get(),abs:2,lang:if(!paramLang.isEmpty,paramLang,#global.language.abbreviation)) +

"ref url: " +

ref(map_ps_areaprojectsettings.logoLink.get(),abs:2,lang:if(!paramLang.isEmpty,paramLang,#global.language.abbreviation)).getUrl)$

Ergebnis:

ANHA Logolink: <PAGEREF editor="111109" htmlname="Home" id="633019" pageref="632957" releaseRevision="505599" releasedby="111109" revision="505599" uniquedescription="005_home_1">

<LANG displayname="Home" language="DE"/>

<PAGE_LANG_SPEC language="DE" showinpagegrp="1" showinsitemap="1"/>

</PAGEREF>

lang: DE

just ref: de.espirit.firstspirit.generate.ContentProducerReference@b5fe68bref

url: /r/de/home/home.html

Eine weitere Spur zu dem Problem ist ein Warning, welches mir direkt nach dem Error ausgegeben wird:
WARN  13.02.2019 11:29:52.293{g-node=619051} (de.espirit.firstspirit.generate.SiteProduction): Undefined field 'getUrl'!

An dieser Stelle verstehe ich nicht, weshalb "getUrl" als field erkannt wird. Die Methode gibt schlieรŸlich wie sie es soll die URL der Referenz zurรผck.
Wenn ich mir das ApiDoc von ref(map_ps_areaprojectsettings.logoLink.get(),abs:2,lang:if(!paramLang.isEmpty,paramLang,#global.language.abbreviation)) ausgeben lasse, ist dort "getUrl()" ebenfalls aufgelistet.

Hat Jemand eine Idee was hier passiert, oder wie ich den Fehler beheben kann? Ich sehe langsam den Wald vor lauter Bรคumen nicht mehr... :smileyconfused:

Vielen Dank und viele GrรผรŸe,
Annika

0 Kudos
4 Replies
mbergmann
Crownpeak employee

Hallo Annika,

versuch erstmal, entweder .getUrl() - also mit Klammern - oder nur .url (ohne Klammern) zu benutzen.

Letzteres ist die sog. โ€žBeanshell-Syntaxโ€œ wo parameterlose Getter wie รถffentliche Attribute angesprochen werden kรถnnen - dann aber ohne das get...

Die โ€žMischformโ€œ ist eher unรผblich.

Das ist aber wahrscheinlich nicht der Grund fรผr den Fehler. Wo kommt das paramRef denn her und vor allem: was ist es fรผr ein Typ? Ich vermute, dass da nicht โ€ždas Richtigeโ€œ in der Variablen steckt. Dadurch funktioniert dann das ref(...) nicht, was zu einem โ€žfalschenโ€œ Objekt als Ergebnis fรผhrt, das dann eben keine Methode getUrl() hat.

Viele GrรผรŸe

Michael

0 Kudos

Hallo Michael,

paramRef ist ein Wert der รผber die $CMS_Render()$-Parameter an das Template รผbergeben wird.

paramRef: class de.espirit.firstspirit.store.access.sitestore.PageRefImpl

Durch das Apidoc weiรŸ ich, dass die Klasse die Methode getUrl() unterstรผtzt.

Mir fรคllt aber gerade auf, wรคhrend ich die Methoden hier herein kopiere, dass diese vermutlich nicht richtig verwendet werden. Ein einfaches Anhรคngen der Methode wird an dieser Stelle vermutlich nicht akzeptiert und ich muss die erwarteten Parameter un den Klammern einfรผgen?

java.lang.String getUrl(de.espirit.firstspirit.access.UrlCreatorProvider, de.espirit.firstspirit.access.Language, de.espirit.firstspirit.access.project.TemplateSet, de.espirit.firstspirit.access.store.PageParams, int)

java.lang.String getUrl(de.espirit.firstspirit.access.UrlCreator, de.espirit.firstspirit.access.Language, de.espirit.firstspirit.access.project.TemplateSet, de.espirit.firstspirit.access.store.PageParams, int)


Bin ich damit auf dem richtigen Weg, oder gibt es noch eine leichtere Mรถglichkeit? Das kommt mir recht komplex vor alles nocheinmal umzubauen, dafรผr dass sich das Template schon richtig verhรคlt und ich nur einen Generierungsfehler beseitigen mรถchte.

Vielen Dank und viele GrรผรŸe,
Annika

0 Kudos
mbergmann
Crownpeak employee

Hallo Annika,

das sind hier zwei unterschiedliche Paar Schuhe. Ja, man kann sich aus einer PageRef selbst die URL geben lassen - das wรคre quasi der "reine API-Weg". Das ref(...) nimmt einem aber genau das ab, insbesondere nutzt es die aktuellen Kontext-Informationen (Sprache, TemplateSet usw.) wenn man sie nicht "รผberschreibt".

Nur um sicherzugehen dass ich Dich richtig verstanden habe: Das Generat (und nicht nur das der Vorschau sondern in der "echten" Generierung) ist am Ende vรถllig in Ordnung und Du hast nur diese lรคstigen Generierungsfehler? Das hatte ich vorher nรคmlich anders interpretiert.

Falls das so ist: Kommt die Fehlermeldung vielleicht aus einem anderen Sprach- oder Vorlagenkanal?

Viele GrรผรŸe

Michael

0 Kudos

Hallo Michael,

leider darf ich an diesem Thema nicht weiter arbeiten.
Der Generierungsfehler tritt in einem Template auf, welches nicht von uns ist. Das wusste ich nicht als ich damit angefangen hatte.
Sollte ich jedoch trotzdem irgendwann eine Lรถsung aufschnappen, werde ich das hier noch kommentieren.

Vielen Dank fรผr deinen Hilfe-Versuch. : )

0 Kudos

Type a product name