Визуализация списков с использованием библиотеки jinjava - PullRequest
0 голосов
/ 15 апреля 2019

Можно ли отображать списки, используя jinjava library ?

До сих пор я мог только рендерить HashMaps. Я использую следующую функцию для преобразования классов case в hashmaps.

  def toNestedJavaMap(caseClass: AnyRef): util.Map[String, Any] =
    (new java.util.HashMap[String, Any]() /: caseClass.getClass.getDeclaredFields) { (accumulator, field) =>
      field.setAccessible(true)
      val value = field.get(caseClass) match {
        case caseClassInstance: Product => toNestedJavaMap(caseClassInstance)
        case x => x
      }
      accumulator.put(field.getName, value)
      accumulator
    }

Что я должен передать как контекст, чтобы отобразить такие вещи, как {% for item in items %}?

1 Ответ

0 голосов
/ 15 апреля 2019

Не уверен, почему я не попытался передать реализацию интерфейса Java Iterable ...

Это рабочая версия, измененная для учета преобразования при использовании потоковых типов scala.

  def toNestedJavaMap(caseClass: AnyRef): util.Map[String, Any] =
    (new java.util.HashMap[String, Any]() /: caseClass.getClass.getDeclaredFields) { (accumulator, field) =>
      field.setAccessible(true)
      val value = field.get(caseClass) match {
        case listInstance: Stream[AnyRef] => listInstance.map(toNestedJavaMap).toList.asJava
        case caseClassInstance: Product => toNestedJavaMap(caseClassInstance)
        case x => x
      }
      accumulator.put(field.getName, value)
      accumulator
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...