SpEL 无法从 Scala 对象中提取属性值

SpEL not able to extract attribute value from Scala object

我有一个名为 Case

的简单 Scala class
case class Case(
             @(Id@field) var id: String,
             var state: CaseState = new OpenCaseState,
             var notes: List[CaseNote] = new ArrayList(),
             var assignedGroups:Set[String] = new HashSet(),
             var aclTemplateIds: Set[String] = new HashSet()
           ) extends Serializable { }

我创建了一个名为 a_case 的 class 实例,将 id 设置为 123。我正在尝试获取 id 属性的值。我试过这个

var parser: ExpressionParser = new SpelExpressionParser
var context: EvaluationContext = new StandardEvaluationContext(a_case)
var extractedId = parser.parseExpression("'id'").getValue(context).asInstanceOf[String]

我得到的只是 "id" 在我的 extractedId 变量中。当我尝试在没有单引号的情况下解析 "id" 时,我得到一个异常,指出 Case 中找不到 属性 id。我是不是遗漏了什么或者这是 Scala 的问题?

如果您的 id 有 getter,SpEL 可以为您做到这一点。

我不太熟悉 Scala,但是:

BeanProperty

You can annotate vals and vars with the @BeanProperty annotation. This generates getters/setters that look like POJO getter/setter definitions. If you want the isFoo variant, use the BooleanBeanProperty annotation. The ugly foo$_eq becomes

setFoo("newfoo");
getFoo();

https://twitter.github.io/scala_school/java.html