2016-07-29 55 views
0

提取屬性值我有一個簡單的Scala類稱爲Case使用SpEL無法從Scala的對象

case class Case(
      @([email protected]) 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的一個實例,設定爲id123。我正在嘗試獲取id屬性的值。我在extractedId變量試過這種

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

我得到的是"id"。當我嘗試解析"id"而沒有單引號時,我收到一個異常說,在Case中找不到屬性id。我在這裏錯過了什麼,或者這是一個Scala問題?

回答

2

規劃環境地政司可以爲你做的,如果你的id有吸氣。

我不能很好地使用Scala,但:

中的BeanProperty

您可以批註丘壑,並與@BeanProperty註釋瓦爾。這會生成看起來像POJO getter/setter定義的getter/setter。如果您需要isFoo變體,請使用BooleanBeanProperty註釋。醜陋foo$_eq成爲

setFoo("newfoo"); 
getFoo(); 

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