使用jinjava库渲染列表

时间:2019-04-14 22:34:37

标签: java scala templates jinja2 jinjava

是否可以使用jinjava library呈现列表?

到目前为止,我只能渲染HashMaps。我正在使用以下函数将案例类转换为哈希图。

largeHeap

为了呈现诸如 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 } 之类的东西,我应该作为上下文传递什么?

1 个答案:

答案 0 :(得分:0)

不确定为什么我不尝试传递java Iterable接口的实现...

这是经过修改的工作版本,可以在具有类似Stream的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
    }