这里的表达式只要是任何返回Boolean的表达式即可,框架提供两个占位符,#current和#root,其中#current表示当前属性的值,#root表示的是当前属性所在的对象的值,可以通过#root.xxx访问其他的属性。该表达式支持java中的任何符号操作,此外还支持java.lang.math中的所有静态函数,比如:min、max和abs等等

    1. @Data
    2. @Accessors(chain = true)
    3. public class ConditionEntity {
    4. /**
    5. * 当前属性和属性num3的值大于100
    6. */
    7. @Matcher(condition = "#current + #root.num2 > 100")
    8. private Integer num1;
    9. /**
    10. * 当前属性的值小于 20
    11. */
    12. @Matcher(condition = "#current < 20")
    13. private Integer num2;
    14. /**
    15. * 当前属性的值大于31并自增
    16. */
    17. @Matcher(condition = "(++#current) >31")
    18. private Integer num3;
    19. /**
    20. * 当前属性的值大于31并自增
    21. */
    22. @Matcher(condition = "(++#current) >31")
    23. private Integer num4;
    24. /**
    25. * 其中某个属性为true
    26. */
    27. @Matcher(condition = "#root.judge")
    28. private Integer age;
    29. private Boolean judge;
    30. /**
    31. * 当前值和另外值的最小值大于第三个值
    32. */
    33. @Matcher(condition = "min(#current, #root.num6) > #root.num7")
    34. private Integer num5;
    35. private Integer num6;
    36. private Integer num7;
    37. }