APIs für die serverseitige Auswertung von Ausdrücken und benutzerdefinierte Anpassung

Sie können die Funktionen dieses Moduls anpassen, indem Sie eine eigene Bean zur Auswertung von Ausdrücken definieren. Normalerweise erstellen Sie eine DefaultEXPEvaluator-Instanz und injizieren die Implementierungen des Variablen-Resolvers und des Funktions-Mappers in diese. Erstellen einer benutzerdefinierten Bean zur Auswertung von Ausdrücken
  1. Erstellen Sie ein benutzerdefiniertes OSGi-Bundle.

  2. Konfigurieren Sie den Spring-Kontext für das Bundle.

  3. Stellen Sie sicher, dass die EXM- und JSP-EL-Klassen in die Manifestdatei des Bundles importiert werden. Die folgenden Pakete sind für Expression Manager erforderlich:
    • com.adobe.exm.exception

    • com.adobe.exm.expeval

    • javax.servlet.jsp.el

  4. Definieren Sie im Spring-Kontext eine Bean, die eine Instanz der Klasse „com.adobe.exm.expeval.DefaultEXPEvaluator“ oder eine benutzerdefinierte Erweiterung davon ist. Konfigurieren Sie diese anschließend wie folgt mit einem Variablen-Resolver und einem Function Mapper:
    <bean id="<expevaluator_id> " class="com.adobe.exm.expeval.DefaultEXPEvaluator" > 
        <lookup-method name="createVariableResolver" bean="<variable_resolver_bean_id>"/> 
        <property name="functionMapper" ref="<function_mapper_bean_id>"/> 
    </bean>
  5. Stellen Sie sicher, dass der Variablen-Resolver eine Instanz einer Klasse ist, die die com.adobe.exm.expeval.EXPVariableResolver-Schnittstelle implementiert. Der Baustein „Expression Manager“ bietet eine einfache zuordnungsbasierte Implementierung, die mit großer Wahrscheinlichkeit nur für die einfachsten denkbaren Verwendungszwecke geeignet ist. Im Baustein „Data Dictionary“ steht jedoch eine ausgereiftere Implementierung des Variablen-Resolvers zur Verfügung, die verwendet werden kann, wenn die Werte von Variablen aus Eigenschaften von Datenwörterbuchinstanzen abgerufen werden.

  6. Die Funktion Mapper-Bean muss eine Instanz einer Klasse sein, die die javax.servlet.jsp.el.FunctionMapper-Schnittstelle implementiert. Im Baustein „Expression Manager“ steht eine (als OSGi-Dienst bereitgestellte) Funktions-Mapper-Implementierung zur Verfügung. Diese aggregiert benutzerdefinierte Funktionen, die von anderen in demselben CRX-Container bereitgestellten Bundles exportiert werden. Hierbei wird die automatische Erkennung verwendet. Um diese Funktions-Mapper-Implementierung zu verwenden, importieren Sie sie mithilfe von BluePrint wie folgt als Spring-Bean:
    <bp:reference id="<function_mapper_bean_id>" 
        interface="javax.servlet.jsp.el.FunctionMapper" 
        filter="(exm.function.mapper.id=lc.exm.compositeFunctionMapper)"/>
  7. Injizieren Sie die Ausdrucksauswertungs-Bean in Ihre benutzerdefinierte Bean und verwenden Sie sie in einer der evaluate*()-APIs zur Auswertung von Ausdrücken.