TechSupport
Crownpeak employee
Crownpeak employee

cannot get page <ID> for page ref <ID>

An verschiedenen Stellen (im Logfile einer Generierung, im SiteArchitect beim Klick auf eine Seitenreferenz, …) kann es geschehen, dass diese Fehlermeldung angezeigt wird:

ERROR 01.06.2015 14:56:06.020{g-node=267381} (de.espirit.firstspirit.store.access.sitestore.PageRefImpl): cannot get page 898248 for page ref 898377

Sie bedeutet, dass die Seitenreferenz (aus der Struktur-Verwaltung) mit der ID 898377 auf eine Seite (in der Inhalte-Verwaltung) mit der ID 898248 zeigt, die im Freigabe-Stand nicht verfügbar ist.

Mögliche Ursachen:

  • Seite und die Seitenreferenz wurden gelöscht, aber nur die Löschung der Seite wurde freigegeben. Dadurch ist die ungültige Referenz im Freigabestand weiterhin erreichbar.
  • Die Seite wurde gelöscht, obwohl sie von der Seitenreferenz mit der ID 898377 verwendet wurde.
  • Die Seite wurde von einem Ordner_A in einen neuen Ordner_B verschoben, Quell-Ordner Ordner_A wurde freigegeben, Ziel-Ordner Ordner_B ist nicht freigegeben. Damit ist die Seite im Freigabe-Stand nicht erreichbar.

Lösungen:

  • Geben Sie die Löschung der Seitenreferenz ebenfalls frei.
  • Stellen Sie die Seite wieder her oder löschen Sie die Seitenreferenz ebenfalls
  • Öffnen Sie im SiteArchitect (in der Struktur-Verwaltung) über die rechte Maustaste auf der Seitenreferenz (ID 898377) das Kontextmenü und klicken Sie im Untermenü “Extras” auf "Zur Seite springen".Prüfen Sie, ob der direkte oder indirekte Vaterknoten dieser Seite nicht freigegeben ist (rot markiert) und geben Sie ihn frei. Anschließend sollte diese Seitenreferenz wieder problemlos generiert werden können.

Im ersten aufgelisteten Fall ist es meistens nicht trivial, den Ordner zu finden, in dem sich die Seitenreferenz befand, um die Löschoperation auszuführen, da beide IDs (also die der Seite und der Seitenreferenz) im SiteArchitect nicht gefunden werden können. Die Lösung ist dann, die Seitenreferenz im Freigabestand zu suchen (nur per Skript möglich), um die Liste der Vaterelemente zu erhalten. Anhand dieser Liste muss man dann im SiteArchitect gesucht werden und der erste Treffer, der rot dargestellt wird, freigegeben werden.

Hier ein einfaches Beispiel für ein entsprechendes Skript, bei welchem die gesuchte ID (hier 1234) in der Zeile 4 eingetragen werden muss.

import de.espirit.firstspirit.agency.StoreAgent;

import de.espirit.firstspirit.access.store.Store;

id=1234;

storeAgent  = context.requestSpecialist(StoreAgent.TYPE);

currentSiteStore = storeAgent.getStore(Store.Type.SITESTORE);

releaseSiteStore = storeAgent.getStore(Store.Type.SITESTORE, true);

searching = true;

element = releaseSiteStore.getStoreElement(id);

do {

    if (currentSiteStore.getStoreElement(element.getId()) != null)

    {

  searching = false;

    } else {

element = element.getParent();

    }

} while (searching);

JOptionPane.showMessageDialog(null,"Das gesuchte Element ist: " + element.getUid() + " ID = " + element.getId());

Labels (1)