我有父子参考的对象列表
case class EmployeeLevel(id: Long, name: String, parentId: Long,
item: List[EmployeeLevel])
val employeeList = List(
EmployeeLevel(1L, "Manoj", 0L, Nil),
EmployeeLevel(2L, "Sv", 1L, Nil),
EmployeeLevel(3L, "Cp", 2L, Nil),
EmployeeLevel(4L, "Manju", 3L, Nil))
Run Code Online (Sandbox Code Playgroud)
如何创建树结构或将它们排列在分层顺序中
val employeeList = List(
EmployeeLevel(1L, "Manoj", 0L, List(
EmployeeLevel(2L, "Sv", 1L, List(
EmployeeLevel(3L, "Cp", 2L, List(
EmployeeLevel(4L, "Manju", 3L, Nil))))))))
Run Code Online (Sandbox Code Playgroud)
或者这是我应该得到的最后一个json
[
{
"id": 1,
"name": "Manoj",
"parentId": 0,
"item": [
{
"id": 2,
"name": "Sv",
"parentId": 1,
"item": [
{
"id": 3,
"name": "Cp",
"parentId": 2,
"item": …Run Code Online (Sandbox Code Playgroud) 我很能读取Freemarker Templet中的scala / java对象值
我尝试了这个:
case class ScheduleEmail(workOrderNo:String,
name:String,
woType:String,
numberOfAssets:String,
artisan:String,
dueDate:Date,priority:String)
object ScheduleMailSending extends App{
val scheduleEmail1= List(ScheduleEmail("1", "Oil Change1", "WO", "3", "XYZ", Date.valueOf("2015-01-01"), "High"))
val configaration = new Configuration
configaration.setClassForTemplateLoading(this.getClass, "/")
configaration.setObjectWrapper(new DefaultObjectWrapper())
val data: util.HashMap[String, Object] = new util.HashMap[String, Object]
val templet = configaration.getTemplate("schedule.ftl")
data.put("mails",scheduleEmail1.asJava)
val writer =new StringWriter()
templet.process(data,writer)
println("writer"+writer)
}
Run Code Online (Sandbox Code Playgroud)
我的模板是
<#list mails as std>
WorkOrderNo:${std.workOrderNo}
woType:${std.woType}
</#l
Run Code Online (Sandbox Code Playgroud)
我正在为这个错误而苦恼-
SEVERE: Error executing FreeMarker template
FreeMarker template error:
For "${...}" content: Expected a string or …Run Code Online (Sandbox Code Playgroud)