Archiv des Intrexx Live! Forums

Hier sehen Sie die Foreneinträge aus dem Intrexx Live! Forum. Bis November 2016 war es das Forum für alle Fragen rund um die Software Intrexx von United Planet.
Seit November 2016 gibt es ein neues moderiertes Forum, das Intrexx Community Forum. Nutzen Sie bitte unbedingt dieses für aktuelle Fragen, Antworten und Informationen.

Wichtig: Dieses Forum dient als Archiv. Die Einträge beziehen sich oft auf ältere Versionen von Intrexx und entsprechen nicht mehr den aktuellen technischen Gegebenheiten.
Daher sollten alle Inhalte ausschließlich von Experten genutzt werden. Bei unsachgemäßer Anwendung kann es zu zeitaufwändigen Problemen oder Datenverlust kommen.
Übersicht > Intrexx Professional: Programming > Wie in Velocity FileUtil richtig verwenden bzw. Existenz von Datei prüfen?

Wie in Velocity FileUtil richtig verwenden bzw. Existenz von Datei prüfen?

Hallo zusammen,

eigentlich geht es um eine recht simple Sache: Ich lasse via programmierten Button ein Bild in HTML ausgeben, welches aus einer statischen Komponente (Pfad an sich) und einer Variable besteht.
Nun kann es ja sein, dass die "berechnete" Bilddatei nicht vorhanden ist und das muss ich nun in VLT prüfen. Laut Doku könnte hier FileUtil nützlich sein, aber ich bekomme nur eine Fehlermeldung im Portal ("Java/VTL exception in JSON response handler") und Debuggen geht ja nicht wirklich.

Folgender Code tut es nicht:
#if($FileUtil.isFile('C:\ProgramData\intrexx\hdm1\external\htmlroot\customassets\employees\1771.jpg'))it's true!#{else}it's not!#end

Ich hab's natürlich auch mit der entsprechend korrespondierenden URL versucht, aber das klappt auch nicht.
Stell ich's falsch an oder mühe ich mich mit der faschen Methode ab?

Vielen Dank im Voraus.

Der Vollständigkeit halber noch der Teil des Codes, welcher funktioniert attention
#set($show_buttoncontrolE225E1EC = false) ## Button is only a work-around which we don't want to have displayed **

#set($empl_id = $drRecord.getValueHolder('textvcontrolC5DEBE41').getValue()) ## Get employee ID from data holder in free form tables and use it to generate the image output **
<img src="http://tstsrv15/hdm/customassets/employees/${empl_id}.jpg" />

11.08.2016 11:20 von hdm-oba
Nachtrag: War ja klar, eine Minute später fällt mir ein, es doch mal mit einem relativen Pfad zu versuchen...dann gibt's zumindestens keine Fehlermeldung mehr, aber die Prüfung auf eine Datei die es definitiv gibt, ist nicht erfolgreich. Damit bin ich zwar der Lösung näher, aber offen ist sie immer noch.

#if($FileUtil.isFile('./customassets/employees/1771.jpg'))it's true!#{else}it's not!#end

11.08.2016 11:28 von hdm-oba
Beim absoluten Pfad könnte das Problem auch sein, dass Backslashes genutzt wurden.
Probier doch mal Doppel-Backslashes (\\) oder einfache Slashes (/)
11.08.2016 11:37 von MartinW
Da alle Versuche mit absoluten Pfaden anscheinend eine Exception geworfen haben, bringt es glaub ich nicht's, dort weiter zu probieren, zumal mir relative Pfade eh sympatischer sind.
Aber mit so magerer Dokumentation sind solche Unterfangen leider ein Blindflug.

Zumal es eben sein kann, dass ich mit der Klasse FileInfo komplett auf dem falschen Dampfer bin, da es sein könnte, dass die abzufragenden Dateien eben irgendwie Intrexx bekannt sein müssen.
11.08.2016 12:07 von hdm-oba
Ich habe mir gerade mal die Doku angesehen und es geht scheinbar tatsächlich nur für Dateien im Portal-verzeichnis.
Um zu prüfen ob die Datei vorhanden ist sollte man aber denke ich die Methode "exists()" verwenden.
11.08.2016 12:22 von MartinW
Ich bin wieder einen halben Schritt weiter attention
Ich habe jetzt erstmal isDirectory getestet um herauszufinden, wo ich pfadmässig ansetzen muss.
Zumindestens für diese Methode geht der Pfad wirklich davon aus, dass man in jenem Pfad startet, welcher unter "Portal Eigenschaften" als Portalverzeichnis angegeben ist.

Mit
#if($FileUtil.isDirectory('external\htmlroot\customassets\employees\'))it's directory!#{else}it's not a directory!#end
bekomme ich immerhin schon mal ein true, während hingegen
#if($FileUtil.isFile('external\htmlroot\customassets\employees\1771.jpg'))it's true!#{else}it's not!#end
immer noch false ist.

Nachtrag: FileUtil.exists() kann genauso nichts finden.
11.08.2016 12:27 von hdm-oba
versuch wirklich mal doppelte Backslashes oder einfache Slashes zu verwenden, einfache Backslashes escapen manchmal den Buchstaben danach und verändern dadurch den String u.U. sodass nichts gefunden werden kann.
11.08.2016 13:04 von MartinW
Habe doppelte Backslashes und einfache Slashes probiert, leider kein Erfolg.
Bei der Directory-Prüfung frage ich mich ob die erfolgreiche Prüfung daran liegt, dass ich das entsprechende Verzeichnis als Dateispeicherort unter "Integration" eingetragen habe.
Allerdings wird das Directory weiterhin gefunden obwohl den Dateispeicherort bereits entfernt habe.
11.08.2016 13:09 von hdm-oba
Andererseits stellt sich für mich eh die Frage, ob diese Art der Vorgehensweise effizient ist (jedes mal im Dateiystem nachschauen ob Datei vorhanden).
Ich glaube es wird darauf hinauslaufen dass ein Prozess periodisch eine simple Datengruppe pflegt (Mitarbeiter-ID mit spezifischer URL oder Default-URL) und ich direkt von dort alles bekomme. Dann müsste auch ausgabeseitig in der Applikation nicht mit Velocity hantieren.
11.08.2016 14:10 von hdm-oba
Zurück | Alles über Intrexx | Impressum | Datenschutzerklärung

Über United Planet
© 2019 United Planet GmbH
Schnewlinstraße 2
79098 Freiburg