Передача объекта Java в шаблон закрытия?

Насколько я знаю, Google Closure Template не позволяет передавать Java-объект в шаблон (по сравнению с FreeMarker). Поэтому я не могу сделать что-то вроде:

// Java file
class Course {
  ...
  public function getName() {
    return name;
  }
}

// Main function
public static void main(String args[]) {
  // Get all courses
  List courses = Courses.getAllCourses();
  Map params = new HashMap();
  params.put("courses", courses);

  String out = tofu.newRenderer("template.listCourses").setData(params);
}

// Soy file
/**
 * @param courses List of courses
 */
{template .listCourses}
  Courses List! 
{foreach $course in $courses} New Course: {$course.name} {/foreach} {/template}

Я думаю, что если я хочу сделать это, мне, вероятно, придется написать пользовательскую функцию, которая использует Reflection, чтобы превратить объект Course в Map? У меня нет опыта работы с Java Reflection. Есть ли такая функция?

6
задан huy 29 January 2012 в 02:36
поделиться