Im Artikel Root Cause Analysis: "Parameter null: objectToReflect" habe ich geschrieben, dass man die Ursache für diese Meldung in einem kommenden Update fixt. Jedoch gibt es noch eine weitere Ursache, welche diese Meldung im wsms.log auslöst. An dieser Stelle möchte ich mich bei Mathias Schrandt herzlich für die ganzen Tipps bedanken, durch ihn konnten wir den Projektbaufehler sehr schnell ausfindig machen.
Es ist bemerkenswert, daß nur vielleicht 10% aller Programmierer Programme ohne Verwendung von Flussdiagrammen erfolgreich schreiben können. Unglücklicherweise glauben aber 90%, daß sie der Gruppe dieser 10% angehören. [Rodnay Zaks] ;)
Severity: Warning Component: Navigation Category: Application Source: Reddot.CMS.Rendering.Objects.ContextLoader.GetObject (:0) Message: Locals: Project: {GUID}; ProjectVariant: {GUID}; Language(Page): {GUID}; Page(ID/UUID): {ID}; ContentClass: {GUID}; RenderMode: Publish; RequestId: {ID}; Parameter null: objectToReflect
Es gibt noch einen weiteren Fall, der zu der o.g. Meldung im wsms.log führt. Sobald man eine Masterpage ausserhalb der Navigationsstruktur im Projket verknüpft, dann diese durch den Pagebuilder jagt (Seitenvorschau oder Publizierung) und dazu noch eine solche Abfrage innerhalb der Seite oder in den Navigation-Manager Content-Klassen vorhanden ist:
<%!! Context:CurrentIndex.Page.Headline !!%>
... passiert folgendes. Der Pagebuilder versucht den Index anzusprechen und da dieser, weil sich die Seite nicht innerhalb der Navigationsstruktur befindet, vorhanden ist. Wird, vollkommen korrekt, die Meldung ausgeben: "Ich finde hier leider keinen Index auf den ich mich beziehen kann" => Parameter null: objectToReflect.
Die Lösung ist eigentlich recht einfach, es gibt aus meiner Sicht mehrere Möglichkeiten wie man damit umgehen kann:
die zu der o.g. Meldung führen können:
<%!! Context:Indexes.RootIndexList.[Int:0].Page.GetUrl() !!%>
<reddot:cms> <htmltext><!-- Resources </htmltext> <output type="object" object="Context:Indexes.RootIndexList.[Int:0].Page.Headline" /> <output type="object" object="Store:Set(Str:GRIndexPage, Context:Indexes.RootIndexList.[Int:0].Page)" /> <output type="object" object="Store:Set(Str:PageKeywords, <%inf_PageKeywords%>)" /> <output type="object" object="Store:Set(Str:GRIndexList, Store:Get(Str:GRIndexPage).Elements.GetElement(Str:lst_Resources))" /> <foreach object="Store:Get(Str:GRIndexList).Value" itemname="item"> <if> <query valuea="Store:item.Elements.GetElement(Str:std_ResourceId).Value" operator="!=" valueb="Escape:EmptyString"> <output type="object" object="Store:Set(Store:item.Elements.GetElement(Str:std_ResourceId).Value, Store:item.Elements)" /> <output type="object" object="Str:|" /> <output type="object" object="Store:item.Elements.GetElement(Str:std_ResourceId).Value" /> <output type="object" object="Str:|" /> </query> </if> </foreach> <htmltext>Resources --></htmltext> </reddot:cms>
<reddot:cms> <if> <query valuea="Context:CurrentPage.GetElementByName(Str:opt_ShowMegaMenu).Value" operator="!=" valueb="Str:false"> <if> <query valuea="Context:Indexes.GetIndexByPage(Context:CurrentMasterPage).GetRootIndex().Id" operator="==" valueb="Context:Indexes.RootIndexList[Int:0].Id"> <htmltext> <%!! Navigation:OutputArea(Mainnavigation, Bool:False, Context:CurrentMasterPage.Id) !!%> </htmltext> </query> <query valuea="Context:Indexes.GetIndexByPage(Context:CurrentMasterPage.MainLink.OwnerPage).GetRootIndex().Id" operator="==" valueb="Context:Indexes.RootIndexList[Int:0].Id"> <htmltext> <%!! Navigation:OutputArea(Mainnavigation, Bool:False, Context:CurrentMasterPage.MainLink.OwnerPage.Id) !!%> </htmltext> </query> <query valuea="Context:Indexes.GetIndexByPage(Context:CurrentMasterPage.MainLink.OwnerPage.MainLink.OwnerPage).GetRootIndex().Id" operator="==" valueb="Context:Indexes.RootIndexList[Int:0].Id"> <htmltext> <%!! Navigation:OutputArea(Mainnavigation, Bool:False, Context:CurrentMasterPage.MainLink.OwnerPage.MainLink.OwnerPage.Id) !!%> </htmltext> </query> <query valuea="Context:Indexes.GetIndexByPage(Context:CurrentMasterPage.MainLink.OwnerPage.MainLink.OwnerPage.MainLink.OwnerPage).GetRootIndex().Id" operator="==" valueb="Context:Indexes.RootIndexList[Int:0].Id"> <htmltext> <%!! Navigation:OutputArea(Mainnavigation, Bool:False, Context:CurrentMasterPage.MainLink.OwnerPage.MainLink.OwnerPage.MainLink.OwnerPage.Id) !!%> </htmltext> </query> <query valuea="Context:Indexes.GetIndexByPage(Context:CurrentMasterPage.MainLink.OwnerPage.MainLink.OwnerPage.MainLink.OwnerPage.MainLink.OwnerPage).GetRootIndex().Id" operator="==" valueb="Context:Indexes.RootIndexList[Int:0].Id"> <htmltext> <%!! Navigation:OutputArea(Mainnavigation, Bool:False, Context:CurrentMasterPage.MainLink.OwnerPage.MainLink.OwnerPage.MainLink.OwnerPage.MainLink.OwnerPage.Id) !!%> </htmltext> </query> <query valuea="Context:Indexes.GetIndexByPage(Context:CurrentMasterPage.MainLink.OwnerPage.MainLink.OwnerPage.MainLink.OwnerPage.MainLink.OwnerPage.MainLink.OwnerPage).GetRootIndex().Id" operator="==" valueb="Context:Indexes.RootIndexList[Int:0].Id"> <htmltext> <%!! Navigation:OutputArea(Mainnavigation, Bool:False, Context:CurrentMasterPage.MainLink.OwnerPage.MainLink.OwnerPage.MainLink.OwnerPage.MainLink.OwnerPage.MainLink.OwnerPage.Id) !!%> </htmltext> </query> <query valuea="Context:Indexes.GetIndexByPage(Context:CurrentMasterPage.MainLink.OwnerPage.MainLink.OwnerPage.MainLink.OwnerPage.MainLink.OwnerPage.MainLink.OwnerPage.MainLink.OwnerPage).GetRootIndex().Id" operator="==" valueb="Context:Indexes.RootIndexList[Int:0].Id"> <htmltext> <%!! Navigation:OutputArea(Mainnavigation, Bool:False, Context:CurrentMasterPage.MainLink.OwnerPage.MainLink.OwnerPage.MainLink.OwnerPage.MainLink.OwnerPage.MainLink.OwnerPage.MainLink.OwnerPage.Id) !!%> </htmltext> </query> </if> </query> </if> </reddot:cms>
... ist Senior Site Reliability Engineer bei der Vodafone GmbH in Düsseldorf. Seit dem Jahr 2007 betreut er zusammen mit seinen Kollegen die OpenText- (vormals RedDot-) Plattform Web Site Management für die deutsche Konzernzentrale.
Er entwickelt Erweiterungen in Form von Plug-Ins und PowerShell Skripten. Seit den Anfängen in 2001 (RedDot CMS 4.0) kennt er sich speziell mit der Arbeitweise und den Funktionen des Management Server aus.