- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当 HashMap 中的顶级键可能存在也可能不存在时,如何解决 PropertyAccessExceptions?
在下面的示例中,如果属性存在,它就可以正常工作,但如果变量映射中不存在该属性,则会抛出 PropertyAccessExceptions。我知道我可以使用 ?对于 null 安全导航,但是当该属性存在于顶层时,这不起作用。
有什么建议吗?
HashMap<String, Object> variables = new HashMap<>();
variables.put("aProperty", "aValue");
Boolean result = MVEL.evalToBoolean("'aValue' == aProperty", variables);
assertThat(result).isTrue(); //This works
result = MVEL.evalToBoolean("'aValue' == aNonExistentProperty", variables);
assertThat(result).isFalse(); //This throws a PropertyAccessException, since aNonExistentProperty is not defined
我想要一种解决方法来避免 PropertyAccessException。
最佳答案
我最近遇到了同样的问题,我发现 MVEL 有不同的方法来评估表达式,其中一个方法是,对于 boolean 值,public static Boolean evalToBoolean(String expression, VariableResolverFactory vars)
。当您传递变量的 Map 时,它会在内部实例化 CachingMapVariableResolverFactory ,您可以覆盖它以避免此问题。
示例实现如下
public class CustomVariableResolvableFactory extends CachingMapVariableResolverFactory{
public CustomVariableResolvableFactory(Map variables) {
super(variables);
}
@Override
public boolean isResolveable(String name) {
if(!super.isResolveable(name))
variables.put(name, null);
return true;
}
}
此类将确保每当 PropertyAccessor 检查变量是否存在于求值上下文中时,如果不存在,它会放置一个 null 并返回 true,从而避免 PropertyAccessExceptions。VariableResolverFactory
的自定义实现可以按如下方式使用。
MVEL.eval(表达式, new CustomVariableResolvableFactory(vars))
我不知道这是否是一种黑客攻击,或者它是否意味着像这样使用,但它有效
关于java - 如何避免 MVEL PropertyAccessExceptions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56890178/
我在尝试保持多对多关系时遇到了以下异常。任何线索将不胜感激。我正在使用 hibernate 的 @ManyToMany 注释,如下所示。 如果我从建筑实体中移除房屋然后坚持下去,它就可以正常工作。只有
当 HashMap 中的顶级键可能存在也可能不存在时,如何解决 PropertyAccessExceptions? 在下面的示例中,如果属性存在,它就可以正常工作,但如果变量映射中不存在该属性,则会抛
我有四个实体 RoomNight、BookingCorporateDetails、BookingDiscountDetails 和 BookingDetails,其中 BookingCorporate
我正在研究 hibernate 映射,除了我在 hibernate 尝试将我的对象持久化到系统时遇到的 PropertyAccessException 之外,其他一切都运行良好。 下面是堆栈跟踪 or
这是一个异常(exception): org.hibernate.PropertyAccessException:空值被分配给 com.FOO.hibernate.Tccl.MIN 的原始类型 set
尝试运行以下程序时: public class Runner { public static void main(String args[]) { Configuration
我有一个父表(MHS_USER)和关联的子表(GROUP),与ManyToMany关系映射如下(相关代码如下) @Entity @Table(name = "mhs_user") public cla
我收到以下错误: org.hibernate.PropertyAccessException: IllegalArgumentException 调用 Part.part_id 的 getter 时发
我想配置 Spring-ws 连接管理器以使用 PoolingHttpClientConnectionManager。这是我的配置 camel-context.xml
我已经做了一个在 hibernate 中使用数据库登录的示例。我的 Xml 和实体类是用户.java: import java.util.Date; import javax.persistence.
当我运行下面的代码以显示属于 JTable 中特定类别的项目时,我收到此异常: private void categoryComboBoxActionPerformed(java.awt.event.
我正在开发一个 Spring-boot 2 项目,该项目用于添加 MCQ 问题、选项和答案。每个问题的选项可能有 2 到 6 个选项。 我创建了 3 个表格:一张用于问题,一张用于选项,一张用于答案。
我最近开始 hibernate ,在我的第一个项目中,我在使用 @ManyToMany 时给出了 PropertyAccessException: Error accessing field 我不知道
我使用 spring-boot-1.5.3 和 spring-data-jpa,有两个实体,它们在 cloumn tags 和 nicknames 上都有 JPA Annoatation Elemen
我正在构建一个使用 java reSTLet 和 Hibernate 的应用程序。 我有用户实体类,每当我调用 http get 时。我收到错误。 { "error": "20000:Hibe
将 Spring Boot 与 Hibernate JPA 结合使用 我无法访问 @Entity 的 DAO,它有一个复合键,其中一列是外键。它给了我org.hibernate.PropertyAcc
这段执行 Hibernate 查询的代码作为 Java 程序运行正常,但如果我将它作为 Spring Boot 运行,它就会失败我在某处读到它可能是因为 Hibernate 5.1 中的错误。可能是吗
这是我的 hibernate POJO 类。 StockModel.java import java.util.Date; public class StockModel implements jav
是什么导致了这个异常,我无法找出。 Request processing failed; nested exception is javax.persistence.PersistenceExcept
我环顾四周寻找答案,看起来它与反射有关,但由于我没有处理过它们,所以我不确定如何进行。我正在尝试构建一个 HQL 查询,该查询仅返回表中与作为 FK 的列匹配的行到另一个表中的 PK。 这是我的代码:
我是一名优秀的程序员,十分优秀!