Search the FirstSpirit Knowledge Base
Hallo,
ich habe ein eigenes Modul. Aus diesem Modul möchte ich nun gern eine Methode (die sind static) aufrufen und das Ergebnis in einer Vorlage (z.B. Absatz-, oder Formatvorlage ) ausgeben (In einem Script klappt das ohne Probleme).
Ich habe es mit
$CMS_VALUE(package.class.methode(...))$
aber es wird ein fehler ausgegeben, dass die Methode nicht gefunden wird.
WARN : Replacing null value with empty default! Undefined method 'de.espirit.firstspirit.parser.eval.Undefined#convertEmail(...)
Muss ich dass Modul in den Forlagen noch bekannt machen, wenn ja wie? Oder funktioniert es event. gar nicht?
$CMS_VALUE(class("mein.package.Klasse").methode())$
$CMS_SET(class, class("mein.package.Klasse").new(...))$$CMS_SET(class, class("mein.package.Klasse").instance(...))$
Hallo Gerrit,
funktioniert bei mir leider nicht.
Beim Methodenaufruf bekommen ich den Fehler:
ERROR: de.sachsen.sab.it.common.util.SABConvert
inside of: Template 'Änderungsseite' (id=198128)
inside of: $CMS_TRIM(level:2)$ - at 2, 14
inside of: $CMS_VALUE(class("de.sachsen.sab.it.common.util.SABConvert").ConvertDateInMilis("12.12.2010"))$ - at 20, 1
WARN : Replacing null value with empty default!
inside of: Template 'Änderungsseite' (id=198128)
inside of: $CMS_TRIM(level:2)$ - at 2, 14
inside of: $CMS_VALUE(class("de.sachsen.sab.it.common.util.SABConvert").ConvertDateInMilis("12.12.2010"))$ - at 20, 1
Bei Aufruf des Konstruktors bekomme ich eine ClassNotFoundException.
in einem Script kann ich die Klasse importieren ...
Es ist aber ein Libary Modul und die Klasse kann man auch per Beanshell laden?
ähm, das ist eine "normale" Java klasse.
Muss ich die anders aufbauen, damit die aus der beanshell geladen werden kann?
Was versteht man unter einem LibraryModul?
Mein Modul sieht wie folgt aus: alle Klassen wurden in ein jar-File gepackt, dass mit eine modul.xml versehen und "fertig" ist das Modul.
Die Klasse kannst du FirstSpirit nur über ein Libary Modul bekannt machen, schau dir mal folgendes an javascript:;
uff, ...
eigenartig, warum ein Modul in den Scripten und nicht in den Vorlagen verwendet werden kann ... nun ja, da ist mal wieder Diku-Lesen angesagt.
Danke.
Mal abgesehen davon, dass man so etwas sinnvoll einsetzen kann, glaube ich allerdings, dass der Aufruf
$CMS_VALUE(class("de.sachsen.sab.it.common.util.SABConvert").ConvertDateInMilis("12.12.2010"))$
schon über FirstSpirit Bordmittel realisierbar ist, ohne für diesen konkreten Fall eine eigene Klasse schreiben zu müssen (wobei ich jetzt nicht genau beurteilen kann, was wirklich dahinter steckt!).
Dazu könnte man zwei Ansätze wählen
1) $CMS_VALUE(#global.now.getTimeInMillis)$
oder wenn ein Datum übergeben werden muss
2) $CMS_SET(calendar, class("java.util.Calendar").instance)$
$CMS_VALUE(calendar.setTime(....).getTimeInMillis)$
oder
$CMS_VALUE(calendar.set(....).getTimeInMillis)$
Gruß,
Daniel
PS: In den Aufrufen könnten Fehler sein, aber das wäre ein möglicher Weg ohne den Umweg über eine externe Klasse gehen zu müssen. Diesen Codeblock könnte man dann z.B. in eine Formatvorlage packen und diese beliebig in den Vorlagen aufrufen (dann könnten z.B. auch die Datumsübergaben daran gebunden werden etc).
Gruß,
Daniel
war ja auch nur ein Bsp. Ich hab andere Methoden, die ich verwenden möchte. Mir gings nur darum, wie ich es überhaupt realisieren kann
u.a. habe ich Methoden zum Formatieren einiger Sachen, die ich in Scripten und Aufträgen verwende. Da wollte ich nicht in den Vorlagen nicht noch einmal die Formatierung umsetzen. (wenn sich daran was ändert muss es an zwei Stellen geändert werden).