@PostFilter包含?

时间:2018-01-24 09:59:12

标签: java spring spring-security spring-data spring-data-jpa

这是我的实体类:

class ModelEntity {
  List<String> list;
  ...
}

现在我想发布过滤器返回的对象并仅返回列表包含“&#39;”的对象。这甚至可能吗?如果是的话,怎么做? 我相信它必须像这样(ofc。改变&#39;包含&#39;):

@PostFilter("(filterObject.list contains 'something')")
List<ModelEntity> findAll()

2 个答案:

答案 0 :(得分:0)

我不认为Spring表达引擎提供 &#34;包含&#34; 作为现成解决方案的表达。

检查this链接是否有Spring安全表达式。

但是你可以为此定义自己的自定义表达式处理程序。

在Spring中有许多定义自定义表达式处理程序的方法。

  1. 实施 PermissionEvaluator
  2. 实施 MethodSecurityExpressionOperations
  3. 有关示例和更多解释,请参阅this博客。

答案 1 :(得分:0)

您只需使用SpEL调用contains java.util.List方法:

@PostFilter("filterObject.list.contains('something')")
List<ModelEntity> findAll()