当前位置:  开发笔记 > 编程语言 > 正文

如何将参数传递给MVEL表达式中编写的函数?

如何解决《如何将参数传递给MVEL表达式中编写的函数?》经验,为你挑选了1个好方法。

我有一个有两种方法的JAVA类.第一个是main方法,第二个是method1().

让我们说以下是这个类:

public class SomeClass() {
  public static void main(String[] args) {
    SomeClass myObj = new SomeClass();
    Map map = new HashMap();
    map.put("obj", myObj);
    MVEL.eval("System.out.println(\"I am inside main method\");obj.method1();",map);
  }
  public static void method1(List listOfStrings){
    System.out.println("I am inside method 1");
  }
}

现在您可以在表达式中看到,要调用method1,我需要将列表作为参数传递.怎么做?表达式需要进行哪些更改?如果我想在程序中传递动态参数怎么办?



1> Ankur Singha..:

您可以创建一个List或来自其他来源作为参数.

您需要注意的事情就是放入用于评估的map对象内部MVEL.

如上所述需要通过列表 - > obj.method1(myList);

下面的工作代码

public class SomeClass {
    public static void main(String[] args) {
        SomeClass myObj = new SomeClass();
        Map map = new HashMap();
        map.put("obj", myObj);

        List listOfStrings = new ArrayList();
        listOfStrings.add("my ");
        listOfStrings.add("List ");
        listOfStrings.add("is printing");

        map.put("obj", myObj);
        map.put("myList", listOfStrings);

        MVEL.eval("System.out.println(\"I am inside main method\");obj.method1(myList);",map);
    }

    public static void method1(List listOfStrings) {
        System.out.println("I am inside method 1");
        for (String s : listOfStrings) {
            System.out.print(s);
        }
    }
}

产量

I am inside main method
I am inside method 1
my List is printing

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有