- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我们目前正在构建自己的产品和框架。我们有一个规则引擎,内部使用 MVEL API 来计算表达式。
最近我们遇到了一个问题
假设我有一个“规则”,其中有很多嵌套的条件。
( A && ( B && ( C && ( D && ( E && F ) ) ) ) )
假设我有像上面这样更长的表达。我没有 A、B、C 等,而是 ognl 之类的(A -> contextObjectLoanApplication.Customer.personinfo.age)
如果我编译这个表达式,编译一个表达式大约需要 3-4 小时。有没有办法让我可以在解析器或上下文中设置任何内容,并且 MVEL 以更优化的方式处理它。
我们几乎被困在这里,要么我们可能需要更改生成此表达式的整个 API,然后进行编译。
所以只是好奇 MVEL 是否可以处理这个问题。
谢谢
最佳答案
MVEL 的解析器很幼稚或有问题,并且在相对于括号深度的指数时间内解析此类表达式:
(A && (B && (C && (D && (E && F)))))
除非他们修复解析器,否则您对此无能为力,但这是不可能的。
以下嵌套表达式也会以指数方式解析:
(A ? B : (C ? D : (E ? F : (G ? H : (I ? J : K)))))
(自 MVEL 2.1.7 起)
关于java - MVEL 表达式编译需要很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19910714/
我有一个 JAVA 类,它有两个方法。第一个是主要方法,第二个是 method1()。 假设以下是类: public class SomeClass() { public static void
我有一个 JAVA 类,它有两个方法。第一个是 main 方法,第二个是 method1()。 假设以下是该类: public class SomeClass() { public static
我在 MVEL 中创建了一个 map ,我必须使用 foreach 对其进行迭代。我该怎么做? 还有一个类似的问题: How to iterate over a map in mvel但在那种情况下,
我看到 MVEL 支持 for 循环和 foreach 模板,但如何从循环中“中断”或“继续”? 最佳答案 文档中没有提及对“中断”或“继续”的支持:http://mvel.codehaus.org/
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
根据 [ http://mvel.codehaus.org/Value+Emptiness 中的 MVEL 文档] empty 如果满足以下条件,则应评估为 true。 字符串的长度大于 0,但仅由空
MVEL 使得向解析器上下文提供自定义函数变得非常容易,但尚不清楚是否有“官方”方法来重载运算符的求值方式。我想到了两个具体的用例: 对数组执行算术应该将操作映射到数组的每个元素上,这样: [1,2,
我想将 MVEL 包含到另一个 MVEL 文件中,我尝试使用 @Include 但它对我不起作用, 任何人都可以建议我如何在另一个 MVEL 文件中使用 MVEL 这是我的代码 Dear @{FIRS
有人知道如何调整 MVEL 以使用不区分大小写的比较吗? Map map = new HashMap<>(); map.put("Name", "Igor"); String property = "
我们目前正在构建自己的产品和框架。我们有一个规则引擎,内部使用 MVEL API 来计算表达式。 最近我们遇到了一个问题 假设我有一个“规则”,其中有很多嵌套的条件。 ( A && ( B && (
我有这个类层次结构 学生类.java public class StudentClass { private List studentList; public List getStud
有没有办法让 MVEL 2.0 ( http://mvel.codehaus.org/ ) 与带有可选参数的函数一起工作? 我希望能够评估这个: trunc('blahblah',2) 还有 trun
我在我的 Java 代码中有预定义的变量,我想在 MVEL 表达式中使用这些变量。我不想传递上下文。 String Col1 = "C"; String Col2 = "D"; String expr
我的类路径中有一个 approprivate jar, org.mvel mvel2 2.4.4.Final jar
当 HashMap 中的顶级键可能存在也可能不存在时,如何解决 PropertyAccessExceptions? 在下面的示例中,如果属性存在,它就可以正常工作,但如果变量映射中不存在该属性,则会抛
我在我的 Java 代码中有预定义的变量,我想在 MVEL 表达式中使用这些变量。我不想传递上下文。 String Col1 = "C"; String Col2 = "D"; String expr
如何在 MVEL 中将字符串转换为整数 Props['MyInteger'] = java.lang.Integer.ParseInt('//某个字符串的 xpath') 其他 java 类型在我的代
我需要计算 MVEL 中包含日期的表达式。基本上,我需要向给定日期添加一定的天数并获取值。当我尝试评估 MVEL 中的表达式时,出现一些异常。 这是我的代码:: package Mvel; impor
对象 obj=帐户;这里的帐户对象包含书籍作为内部对象。那么我如何访问 mvel 中的这些值。 我是 MVEL 新手。那么您能否建议我如何克服上述问题。 最佳答案 MVEL 适用于 OGNL。 假设A
如果我在 MVEL 中有这个脚本: myString = null; if (myString == "Foo") { return true; } 我会在这个脚本中得到一个空指针吗? 因为我
我是一名优秀的程序员,十分优秀!