2017-01-26 9 views
1

Я новичок в MVEL. То, что я пытаюсь достичь, - регистрировать ввод и вывод каждой функции в выражении.Перехват ввода и вывода каждой функции в выражении MVEL

Например, имея следующее выражение

h.function1('value1') != h.function2('value2') 

, что я пытаюсь войти в входные и выходные значения function1 и function2. Я читал о Interceptors. Если я правильно понимаю, добавить и перехватить, мне нужно переписать вышеприведенное выражение следующим образом.

@Intercept h.function1('value1') != @Intercept h.function2('value2') 

Однако, я не могу заставить своих пользователей, чтобы добавить @Intercept аннотацию.

Каков наилучший способ выполнить эту задачу? Я должен возобновить Spring AOP? :(

ответ

1

Это не @Intercept но имя перехватывать вы положили на карте. Беллоу @test аннотаций. Пожалуйста, проверьте подробно здесь https://github.com/mvel/mvel/blob/master/src/test/java/org/mvel2/tests/core/CoreConfidenceTests.java

interceptors.put("test", 
     testInterceptor); 

executeExpression(compileExpression("@test System.out.println('MIDDLE');", 
     null, 
     interceptors)); 
+0

Спасибо за ваш ответ. Но вы подтвердили мне, что является обязательным поместить аннотацию в выражение для выполнения задачи, используя исключительно MVEL, не так ли? –

+1

Да, в исходном коде есть документ (проверьте doxygen для метода compileExpression) http://www.programcreek.com/java-api-examples /index.php?source_dir=mvel-master/src/main/java/org/mvel2/MVEL.java – nguyentran