Das webResolvers-Modul (abgekündigt)

8.0+Mit Version 4.2 wurde in QF-Test das webResolvers-Modul eingeführt, welches in Web-Projekten in speziellen Fällen eine Ausführung von Javascript-basierter Resolver-Logik direkt im Browser ermöglichte. Da die gleiche Funktionalität auch immer mit klassischen Resolvern (siehe Abschnitt 53.1) und einem Aufruf von callJS() (siehe Abschnitt 53.11.4) erreicht werden kann, wurde das Modul mit QF-Test 8.0 abgekündigt.

Eine Namensauflösung, die bei fehlendem Namen auf der Node im Browser die Methode customFallbackNameProvider aufruft, wurde mit Hilfe des webResolvers-Moduls zum Beispiel mit diesem Aufruf registriert:

getNameFunc = """
    function getName(node, name) {
        if (! name) return node.customFallbackNameProvider();
    }
"""

webResolvers.addResolver("myNames", getNameFunc, "DIV")
Beispiel 53.30:  Ein veralteter webNameResolver wird mit Jython registriert

Die direkte Formulierung des Resolvers ohne webResolvers-Modul ist sehr einfach:

def getName(node, name):
    return node.callJS("""
        if (! name) return node.customFallbackNameProvider();
    """, {"node":node,"name":name})

resolvers.addResolver("myNames", getName, "DIV")
Beispiel 53.31:  Ein NameResolver mit Javascript-Aufruf wird mit Jython registriert

In diesem Fall lässt sich die Performanz des Resolvers weiter verbessern, indem der Javascript-Aufruf im Browser nur dann erfolgt, wenn er auch nötig ist:

def getName(node, name):
    if not name:
        return node.callJS('(node) => node.customFallbackNameProvider()');

resolvers.addResolver("myNames", getName, "DIV")
Beispiel 53.32:  Ein NameResolver mit Javascript-Aufruf wird mit Jython registriert (optimiert)

Die Überführung weiterer bestehender webResolvers-Modul-Aufrufe in klassische Resolver erfolgt analog.