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();
我有一个名为 Case
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 theisFoo
variant, use theBooleanBeanProperty
annotation. The uglyfoo$_eq
becomes
setFoo("newfoo");
getFoo();