У меня есть приложение, использующее Play!фреймворк.Я привязываю переменные к шаблонам и строю на том, что может быть жизненно важной чертой для Play !: https://github.com/asinghal/Play-ScalaGen/blob/master/misc_utils/EmailNotifier.scala
var templateHtmlBinding = new java.util.HashMap[String, Object]()
var templateTextBinding = new java.util.HashMap[String, Object]()
for (o <- args) {
val names = LocalVariablesNamesTracer.getAllLocalVariableNames(o).toList
for (name <- names) {
templateHtmlBinding += (name -> o)
templateTextBinding += (name -> o)
}
}
Проблема в том, что когда вы делаете getAllLocalVariableNames
на line 155
,весь список возвращается пустым.Я могу подтвердить, что объекты, переданные в функцию, не являются нулевыми, как проверено, распечатав их внутри функции.Мне интересно, если что-то не так, используя это в Scala, или кто-нибудь знает метод отражения, который мог бы сделать эту работу?
Редактировать
Я пробую немного отражения, но мои знания об отражениинесколько ограничен.Образец:
val names = o.getClass.getMethods.toList.map(_.toString)
Вывод из объекта-образца, переданного в:
List(public java.lang.String models.Account.name(), public static final scala.Op
tion models.Account.get(long), public boolean models.Account.equals(java.lang.Ob...
Есть идеи, как отфильтровать это далее?
Второе редактирование
Я дошел до этого, что успешно создает список каждого объекта и его свойств, но, к сожалению, он все еще вызывает ту же ошибку с заполненным списком:
val oname = o.getClass.getName.replaceAll("models.","").toLowerCase
val names = o.getClass.getDeclaredFields.toList.map(_.getName.toString).map(oname+"."+_)
дает:
List(account.id, account.name, account.address,...
Любое понимание того, что что-то не так в игре!шаблонный