- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
MVEL 使得向解析器上下文提供自定义函数变得非常容易,但尚不清楚是否有“官方”方法来重载运算符的求值方式。我想到了两个具体的用例:
对数组执行算术应该将操作映射到数组的每个元素上,这样:
[1,2,3] + 1 == [2,3,4]
任何带有 null 操作数的运算都应计算为 null(如 Excel 中的#N/A
),这样:
1 + null == null
如果没有“官方”解决方案,是否有一种明显的方法可以侵入 MVEL 来实现这一点?
最佳答案
第二期
1+ null == null
或1* null
如果您实际上在 Mvel API 类中对此进行调试,则对于这种特殊情况,它们会显式返回 false
或 1null
。
如果 Mvel 能解决这个问题,那就太好了。但我也遇到了同样的问题,所以我们做了什么,我们在执行表达式之前创建了一些智能,我们修改了表达式并包含“IF”条件来检查为空且运算符为“/”或“*”的字段",返回null。
您还可以使用VariableResolverFactory
,并传递您的函数,如下所示
private static VariableResolverFactory getMvelFactory(Map contextMap) {
VariableResolverFactory functionFactory = new MapVariableResolverFactory(contextMap);
MVEL.eval("checkNullValue = def (x) { x == null ? 0 : x };", functionFactory);
return functionFactory;
}
因此,通过此您可以修改可执行表达式,如下所示并返回任何值。基本上需要在 MVEL 之上编写一个包装器。
a + b
到 checkNullValue(a) + checkNullValue(b)
关于java - MVEL 运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22344299/
我有一个 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; } 我会在这个脚本中得到一个空指针吗? 因为我
我是一名优秀的程序员,十分优秀!