2016-07-29 11 views
0

Ich habe eine einfache Scala Klasse Case genanntSpel nicht in der Lage Attributwert von Scala Objekt zu extrahieren

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 { } 

ich eine Instanz dieser Klasse erstellt a_case genannt, id als 123 Einstellung. Ich versuche den Wert des id Attributs zu erhalten. Ich habe versucht, diesen

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

Alles, was ich in meinem "id"extractedId Variable erhalten. Wenn ich versuche, "id" ohne die einfachen Anführungszeichen zu analysieren, erhalte ich eine Ausnahme, die besagt, dass die Eigenschaft id in Case nicht gefunden wird. Fehle ich hier etwas oder ist das ein Scala-Problem?

Antwort

2

SpEL kann das für Sie tun, wenn Ihre id getter hat.

Ich bin nicht gut mit Scala, aber:

BeanProperty

Sie können vals mit Anmerkungen versehen und VARs mit der @BeanProperty Anmerkung. Dies erzeugt Getter/Setter, die wie POJO-Getter/Setter-Definitionen aussehen. Wenn Sie die isFoo Variante verwenden möchten, verwenden Sie die BooleanBeanProperty Annotation. Die hässliche foo$_eq wird

setFoo("newfoo"); 
getFoo(); 

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