Scriptovací jazyk JavaScript
Zpět na hlavní stránku
Na této stránce uvádím několik postřehů a informací ohledně použitého
scriptovacího jazyka:
- Z prostředí scriptu je možno využívat libovolné Java třídy, rozhraní
a proměnné. Je tedy možno používat jak základní Java 1.6 API, tak i aplikační
rozhraní validačního serveru (viz JavaDoc).
- Oproti klasické Java syntaxi je pro přístup ke třídám použit jednak jejich celý
název (včetně balíku) a použít prefix "Packages.". Výjimkou jsou pouze třídy
z balíku "java.lang":
System.out.println( Packages.java.math.Abs(-5) );
- Co se týče jmenných kontextů, každý XML soubor s definicí procesu má
jeden jmenný kontext - tedy všechny fragmenty scriptu, ať jsou umístěné
v jakémkoliv XML elementu, mají společný kontext a sdílejí tedy proměnné.
Jsou-li volány jiné XML soubory příkazem "call", zdědí aktuální kontext
(definované proměnné budou pak i v něm).
Je-li proměnná definována s klíčovým slovem "var", pak se jedná pouze
o "lokální" proměnnou, tedy uloží se do aktuálního kontextu a nebude přístupná
z rodičovského. Pokud proměnná není deklarována s "var", pak je uložena do
kořenového kontextu a je pak tedy přístupna po zbytek běhu validace.
- Pozor na chování "String.length" versus "String.length()". JavaScript umí
transparentně volat Java metody na Java třídách a to vnáší lehký problém v tom,
že občas je nějaký řetězec skutečným JavaScriptovým řetězcem a občas se jedná
o Java třídu String, která je jakoby používána v JavaScriptu (info viz dokumentace
Rhino - viz dole).
Pro JavaScriptové řetězce se velikost zjišťuje "length", pro Java Stringy je
potřeba volat metodu "length()" a bohužel to zřejmě nejde nijak sjednotit. Je tedy
potřeba dávat pozor na to, odkud se řetězec "bere" - zda není třeba výsledkem
volání nějaké Java metody...
var js_retezec = "javascripovy retezec";
velikost1 = js_retezec.length;
soubor = new Packages.java.io.File("/tmp/soubor"); /* Javovsky objekt tridy File */
var java_retezec = soubor.getAbsolutePath(); /* tohle vrati Java retezec ! */
velikost2 = jave_retezec.length();
- Je potřeba si uvědomit, že JavaScript je součástí XML souboru, z čehož plyne
nutnost některé znaky (klíčové pro XML) uvádět v XML syntaxi: Především se jedná
o znaky "<", ">" a "&", které jsou nejkritičtější. Místo nich je
tedy nutno (bohužel) psát jejich "opisy": "<", ">" a "&"
Technické informace
Zvolená implementace JavaScriptu je
Rhino
.
Zpět na hlavní stránku
autor: Lukáš Valenta, září 2007 (lukas.valenta at seznam.cz)